2008 · 79 citations · 25 references
ComputingComputer EngineeringComputer ScienceEmbedded SystemsHardware Description LanguagesHardware-software Co-designCpu SchedulingInstruction Set ArchitectureInterprocess CommunicationInterrupt HandlingSynchronization PrimitivesVerificationInterrupt AnalysisInterrupt ArchitectureInterrupt Handling AnalysisInterrupt Handling VerificationInterrupt PreemptionLow-latency InterruptsMicroarchitectural Security Verification
Hardware interrupts are widely used in the world's critical software systems to support preemptive threads, device drivers, operating system kernels, and hypervisors. Handling interrupts properly is an essential component of low-level system programming. Unfortunately, interrupts are also extremely hard to reason about: they dramatically alter the program control flow and complicate the invariants in low-level concurrent code (e.g., implementation of synchronization primitives). Existing formal verification techniques---including Hoare logic, typed assembly language, concurrent separation logic, and the assume-guarantee method---have consistently ignored the issues of interrupts; this severely limits the applicability and power of today's program verification systems.
25
Separation logic: a logic for shared mutable data structures
John Reynolds · 2003 · 2.2K citations
An axiomatic basis for computer programming
C. A. R. Hoare · Communications of the ACM · 1983 · 1.5K citations
C. A. R. Hoare · Communications of the ACM · 1974 · 1.5K citations · Full text
A Syntactic Approach to Type Soundness
Andy Wright, Matthias Felleisen · Information and Computation · 1994 · 1.1K citations