What is the technology behind Jinx?
Jinx is based on a research project from the University of Washington called Deterministic Shared-Memory Multi-Processing, or DMP. To understand DMP, one must first understand the concept of determinism. Determinism is the notion that, given a set of input, the application will always produce the same output. Traditional sequential programs behaved this way. Parallel applications, on the other hand, are non-deterministic, meaning that the same input doesn’t always yield the same output. This is because the operating system adjusts the timing of threads in an application based on a variety of factors external to the application, such as the operating system scheduling one processor over another, when one processor has less inhibited access to system memory, and so on. Non-deterministic applications pose a number of significant challenges, including difficulty in finding and reproducing defects, difficulty in debugging, testing, and supporting applications once in production, and a difficulty in achieving fault-tolerance.
DMP makes multi-core applications execute just like sequential programs: in a deterministic fashion. As a result, you can debug, test, and support applications the same way you do for sequential programs. DMP enables fault-tolerance for multi-threaded applications with very little performance penalty. And DMP can be implemented anywhere, including in hardware, a hypervisor, embedded within an operating system, and shipped as separately installed runtimes.
Corensic owns the patents and intellectual property for DMP and builds products based on the technology, beginning with Jinx.