Reproducible Execution of POSIX Programs with DiOS

Investor logo

Warning

This publication doesn't include Faculty of Arts. It includes Faculty of Informatics. Official publication website can be found on muni.cz.
Authors

ROČKAI Petr BARANOVÁ Zuzana MRÁZEK Jan KEJSTOVÁ Katarína BARNAT Jiří

Year of publication 2019
Type Article in Proceedings
Conference Software Engineering and Formal Methods
MU Faculty or unit

Faculty of Informatics

Citation
Web https://link.springer.com/chapter/10.1007/978-3-030-30446-1_18
Doi http://dx.doi.org/10.1007/978-3-030-30446-1_18
Keywords DIVINE; DiOS; operating system; formal verification; model checking; POSIX; C; C++
Description In this paper, we describe DiOS, a lightweight model operating system which can be used to execute programs that make use of POSIX APIs. Such executions are fully reproducible: running the same program with the same inputs twice will result in two exactly identical instruction traces, even if the program uses threads for parallelism. DiOS is implemented almost entirely in portable C and C++: although its primary platform is DiVM, a verification-oriented virtual machine, it can be configured to also run in KLEE, a symbolic executor. Finally, it can be compiled into machine code to serve as a user-mode kernel. Additionally, DiOS is modular and extensible. Its various components can be combined to match both the capabilities of the underlying platform and to provide services required by a particular program. New components can be added to cover additional system calls or APIs. The experimental evaluation has two parts. DiOS is first evaluated as a component of a program verification platform based on DiVM. In the second part, we consider its portability and modularity by combining it with the symbolic executor KLEE.
Related projects:

You are running an old browser version. We recommend updating your browser to its latest version.