Abstract
One of the challenges in verifying systems level code is the low-level, untyped view of the machine state that operating systems have. We describe a way to faithfully formalise this view while at the same time providing an easy-to-use, abstract and typed view of memory where possible. We have used this formal memory model to verify parts of the virtual memory subsystem of the L4 high-performance microkernel. All formalisations and proofs have been carried out in the theorem prover Isabelle and the verified code has been integrated into the current implementation of L4.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
ARM Limited. ARM Architecture Reference Manual (June 2000)
Bevier, W.R.: Kit: A study in operating system verification. IEEE Transactions on Software Engineering 15(11), 1382–1396 (1989)
Bornat, R.: Proving pointer programs in Hoare Logic. In: Backhouse, R., Oliveira, J.N. (eds.) MPC 2000. LNCS, vol. 1837, pp. 102–126. Springer, Heidelberg (2000)
Burstall, R.: Some techniques for proving correctness of programs which alter data structures. In: Meltzer, B., Michie, D. (eds.) Machine Intelligence, vol. 7, pp. 23–50. Edinburgh University Press (1972)
Cattel, T.: Modelization and verification of a multiprocessor realtime OS kernel. In: Proceedings of FORTE 1994, Bern, Switzerland (October 1994)
Duval, G., Julliand, J.: Modelling and verification of the RUBIS μ-kernel with SPIN. In: SPIN 1995 Workshop Proceedings (1995)
Filliâtre, J.-C., Marché, C.: Multi-prover verification of C programs. In: Davies, J., Schulte, W., Barnett, M. (eds.) ICFEM 2004. LNCS, vol. 3308, pp. 15–29. Springer, Heidelberg (2004)
Gargano, M., Hillebrand, M., Leinenbach, D., Paul, W.: On the correctness of operating system kernels. In: Hurd, J., Melham, T. (eds.) TPHOLs 2005. LNCS, vol. 3603, pp. 1–16. Springer, Heidelberg (2005)
Hohmuth, M., Tews, H., Stephens, S.G.: Applying source-code verification to a microkernel — the VFiasco project. Technical Report TUD-FI02-03-März, TU Dresden (2002)
Jensen, J., Joergensen, M., Klarlund, N., Schwartzbach, M.: Automatic verification of pointer programs using monadic second-order logic. In: PLDI 1997 (1997)
Klein, G., Tuch, H.: Towards verified virtual memory in L4. In: Slind, K., Bunker, A., Gopalakrishnan, G.C. (eds.) TPHOLs 2004. LNCS, vol. 3223. Springer, Heidelberg (2004)
L4 eXperimental Kernel Reference Manual Version X.2 (2004), http://l4hq.org/docs/manuals/
Liedtke, J.: On μ-kernel construction. In: 15th ACM Symposium on Operating System Principles (SOSP) (December 1995)
Mehta, F., Nipkow, T.: Proving pointer programs in higher-order logic. Information and Computation (2005) (To appear)
Necula, G., Condit, J., Harren, M., McPeak, S., Weimer, W.: Ccured: type-safe retrofitting of legacy software. ACM Trans. Prog. Lang. Syst. 27(3), 477–526 (2005)
Neumann, P.G., Boyer, R.S., Feiertag, R.J., Levitt, K.N., Robinson, L.: A provably secure operating system: The system, its applications, and proofs. Technical Report CSL-116, SRI International (1980)
Nipkow, T., Paulson, L.C., Wenzel, M.T.: Isabelle/HOL. LNCS, vol. 2283. Springer, Heidelberg (2002)
Norrish, M.: C formalised in HOL. PhD thesis, Computer Laboratory, University of Cambridge (1998)
Reynolds, J.C.: Separation logic: A logic for shared mutable data structures. In: Proc. 17th IEEE Symposium on Logic in Computer Science, pp. 55–74 (2002)
Schirmer, N.: A verification environment for sequential imperative programs in Isabelle/HOL. In: Baader, F., Voronkov, A. (eds.) LPAR 2004. LNCS (LNAI), vol. 3452, pp. 398–414. Springer, Heidelberg (2005)
System Architecture Group. The L4Ka:Pistachio microkernel. White paper, University of Karlsruhe (May 2003)
Tuch, H., Klein, G.: Verifying the L4 virtual memory subsystem. In: Proc. NICTA FM Workshop on OS Verification, pp. 73–97. Technical Report 0401005T-1, National ICT Australia (2004)
Tullmann, P., Turner, J., McCorquodale, J., Lepreau, J., Chitturi, A., Back, G.: Formal methods: a practical tool for OS implementors. In: Proceedings of the Sixth Workshop on Hot Topics in Operating Systems, pp. 20–25 (1997)
Walker, B., Kemmerer, R., Popek, G.: Specification and verification of the UCLA Unix security kernel. Communications of the ACM 23(2), 118–131 (1980)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Tuch, H., Klein, G. (2005). A Unified Memory Model for Pointers. In: Sutcliffe, G., Voronkov, A. (eds) Logic for Programming, Artificial Intelligence, and Reasoning. LPAR 2005. Lecture Notes in Computer Science(), vol 3835. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11591191_33
Download citation
DOI: https://doi.org/10.1007/11591191_33
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-30553-8
Online ISBN: 978-3-540-31650-3
eBook Packages: Computer ScienceComputer Science (R0)