ABSTRACT
Research operating systems are often written in type-safe, high-level languages. These languages perform automatic static and dynamic checks to give basic assurances about run-time behavior. Yet such operating systems still rely on unsafe, low-level code to communicate with hardware, with little or no automated checking of the correctness of the hardware-software interaction. This paper describes experience using the Spec# language and Boogie verifier to statically specify and statically verify the safety of a driver's interaction with a network interface, including the safety of DMA.
- Thomas Ball, Ella Bounimova, Byron Cook, Vladimir Levin, Jakob Lichtenberg, Con McGarvey, Bohus Ondrusek, Sriram K. Rajamani and Abdullah Ustuner. Thorough Static Analysis of Device Drivers. EuroSys, 2006. Google Scholar
Digital Library
- Mike Barnett, K. Rustan M. Leino, and Wolfram Schulte. The Spec# programming system: An overview. CASSIS, 2004 Google Scholar
Digital Library
- Brian Bershad, Stefan Savage, Przemyslaw Pardyak, Emin Gun Sirer, David Becker, Marc Fiuczynski, Craig Chambers, Susan Eggers. Extensibility, Safety and Performance in the SPIN Operating System. Symposium on Operating System Principles (SOSP), 1995. Google Scholar
Digital Library
- Edoardo Biagioni. A structured TCP in standard ML. SIGCOMM, 1994. Google Scholar
Digital Library
- Luca Cardelli. Type systems. The Computer Science and Engineering Handbook. CRC Press, 2004. Chapter 97.Google Scholar
- Christopher L. Conway and Stephen A. Edwards. NDL: A Domain-Specific Language for Device Drivers. Languages, Compilers, and Tools for Embedded Systems (LCTES), 2004. Google Scholar
Digital Library
- Digital Equipment Corporation. DIGITAL Semiconductor 21140A PCI Fast Ethernet LAN Controller Hardware Reference Manual. http://www.intel.com/design/network/manuals/21140ahm.pdfGoogle Scholar
- Dawson Engler, David Yu Chen, Seth Hallem, Andy Chou, and Benjamin Chelf. Bugs as Deviant Behavior: A General Approach to Inferring Errors in Systems Code. Symposium on Operating Systems Principles (SOSP), 2001. Google Scholar
Digital Library
- Manuel Fähndrich, Mark Aiken, Chris Hawblitzel, Orion Hodson, Galen C. Hunt, James R. Larus, and Steven Levi. Language Support for Fast and Reliable Message-based Communication in Singularity OS. EuroSys, 2006.Google Scholar
Digital Library
- Michael Golm, Meik Felser Christian Wawersich, and Jürgen Kleinöder. The JX Operating System. USENIX Annual Technical Conference, 2002. Google Scholar
Digital Library
- Thomas Hallgren, Mark P. Jones, Rebekah Leslie, Andrew Tolmach. A Principled Approach to Operating System Construction in Haskell. International Conference on Functional Programming (ICFP), 2005. Google Scholar
Digital Library
- F. Mérillon, L. Réveillère, C. Consel, R. Marlet, and G. Muller. Devil: An IDL for Hardware programming. Operating Systems Design and Implementation (OSDI), 2000.Google Scholar
- Jun Sun, Wanghong Yuan, Mahesh Kallahalla, Nayeem Islam. HAIL: a language for easy and correct device access. EMSOFT, 2005. Google Scholar
Digital Library
- Lea Wittie. Type-Safe Operating System Abstractions. Ph.D. Thesis, 2004. Dartmouth Technical Report TR2004-526. Google Scholar
Digital Library
Recommendations
Bounded model checking of high-integrity software
HILT '13: Proceedings of the 2013 ACM SIGAda annual conference on High integrity language technologyModel checking [5] is an automated algorithmic technique for exhaustive verification of systems, described as finite state machines, against temporal logic [9] specifications. It has been used successfully to verify hardware at an industrial scale [6]. ...
Accelerating counterexample detection in software model checking
ICSE '18: Proceedings of the 40th International Conference on Software Engineering: Companion ProceeedingsModel checking is an automatic approach in enhancing correctness of systems. However, when it is applied to discover flaws in software systems, most of the respective verification tools lack scalability due to the state-space explosion problem. ...
Certifying Hardware Model Checking Results
Formal Methods and Software EngineeringAbstractModel checking is used widely as a formal verification technique for safety-critical systems. Certifying the correctness of model checking results helps increasing confidence in the verification procedure. This can be achieved by additional book-...




Comments