There are several applications for the deterministic execution of software, e.g. replicated systems, test and febugging scenarios. In all cases the execution should lead zo the same effects in order to be consistent. Multi-threading is one of the major sources of nondeterminism. Several deterministic scheduling algorithms exist that allow concurrent but deterministic executions despite of arbitrary switching decisions of the underlying system schedulers. We present the novel and flexible Unified Deterministic Scheduling algorithm (UDS) for weakly and fully deterministic systems. Compared to existing algorithms, UDS has a broad parameter set that can be (re-)configured even at runtime. Further, we show that many existing algorithms are merely a particular configuration of UDS.
['Franz J. Hauck', 'Jörg Domaschka']
UDS: A Unified Approach to Deterministic Multithreading