Efficient System-Enforced Deterministic Parallelism
Deterministic execution offers many benefits for debugging, fault tolerance, and security. Current methods of executing parallel programs deterministically, however, often incur high costs, allow misbehaved software to defeat repeatability, and transform time-dependent races into input- or path-dependent races without eliminating them. The authors introduce a new parallel programming model addressing these issues, and use determinator, a proof-of-concept OS, to demonstrate the model's practicality. determinator's microkernel API provides only "Shared-nothing" address spaces and deterministic interprocess communication primitives to make execution of all unprivileged code - well-behaved or not - precisely repeatable.