Safe to the Last Instruction: Automated Verification of a Type-Safe Operating System

被引:12
|
作者
Yang, Jean [1 ]
Hawblitzel, Chris [1 ]
机构
[1] MIT, Comp Sci & Artificial Intelligence Lab, Cambridge, MA 02139 USA
关键词
Verification; Operating system; run-time system; verification; type safety;
D O I
10.1145/1809028.1806610
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Typed assembly language (TAL) and Hoare logic can verify the absence of many kinds of errors in low-level code. We use TAL and Hoare logic to achieve highly automated, static verification of the safety of a new operating system called Verve. Our techniques and tools mechanically verify the safety of every assembly language instruction in the operating system, run-time system, drivers, and applications (in fact, every part of the system software except the boot loader). Verve consists of a "Nucleus" that provides primitive access to hardware and memory, a kernel that builds services on top of the Nucleus, and applications that run on top of the kernel. The Nucleus, written in verified assembly language, implements allocation, garbage collection, multiple stacks, interrupt handling, and device access. The kernel, written in C# and compiled to TAL, builds higher-level services, such as preemptive threads, on top of the Nucleus. A TAL checker verifies the safety of the kernel and applications. A Hoare-style verifier with an automated theorem prover verifies both the safety and correctness of the Nucleus. Verve is, to the best of our knowledge, the first operating system mechanically verified to guarantee both type and memory safety. More generally, Verve's approach demonstrates a practical way to mix high-level typed code with low-level untyped code in a verifiably safe manner.
引用
收藏
页码:99 / 110
页数:12
相关论文
共 50 条
  • [1] Safe to the Last Instruction: Automated Verification of a Type-Safe Operating System
    Yang, Jean
    Hawblitzel, Chris
    PLDI '10: PROCEEDINGS OF THE 2010 ACM SIGPLAN CONFERENCE ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION, 2010, : 99 - 110
  • [2] Safe to the Last Instruction: Automated Verification of a Type-Safe Operating System
    Yang, Jean
    Hawblitzel, Chris
    COMMUNICATIONS OF THE ACM, 2011, 54 (12) : 123 - 131
  • [3] Type-safe casting
    Hsieh, Wilson C.
    Fiuczynski, Marc E.
    Pardyak, Przemyslaw
    Bershad, Brian N.
    Software - Practice and Experience, 1998, 28 (11): : 1245 - 1252
  • [4] Type-safe disks
    Sivathanu, Gopalan
    USENIX ASSOCIATION 7TH USENIX SYMPOSIUM ON OPERATING SYSTEMS DESIGN AND IMPLEMENTATION, 2006, : 15 - 28
  • [5] Type-safe cast
    Weirich, S
    JOURNAL OF FUNCTIONAL PROGRAMMING, 2004, 14 : 681 - 695
  • [6] Type-safe method inlining
    Glew, N
    Palsberg, J
    ECOOP 2002 - OBJECT-ORIENTED PROGRAMMING, 2002, 2374 : 525 - 544
  • [7] Type-safe update programming
    Erwig, Martin
    Ren, Deling
    2003, Springer Verlag (2618):
  • [8] Type-safe update programming
    Erwig, M
    Ren, D
    PROGRAMMING LANGUAGES AND SYSTEMS, 2003, 2618 : 269 - 283
  • [9] A type-safe database interface
    Villoing, Florian
    Briot, Emmanuel
    RELIABLE SOFTWARE TECHNOLOGIES - ADA-EUROPE 2008, 2008, 5026 : 144 - 157
  • [10] Type-safe multithreading in Cyclone
    Grossman, D
    ACM SIGPLAN NOTICES, 2003, 38 (03) : 13 - 25