Skip to main content

A Unified Memory Model for Pointers

  • Conference paper
Logic for Programming, Artificial Intelligence, and Reasoning (LPAR 2005)

Part of the book series: Lecture Notes in Computer Science ((LNAI,volume 3835))

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. ARM Limited. ARM Architecture Reference Manual (June 2000)

    Google Scholar 

  2. Bevier, W.R.: Kit: A study in operating system verification. IEEE Transactions on Software Engineering 15(11), 1382–1396 (1989)

    Article  Google Scholar 

  3. 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)

    Chapter  Google Scholar 

  4. 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)

    Google Scholar 

  5. Cattel, T.: Modelization and verification of a multiprocessor realtime OS kernel. In: Proceedings of FORTE 1994, Bern, Switzerland (October 1994)

    Google Scholar 

  6. Duval, G., Julliand, J.: Modelling and verification of the RUBIS μ-kernel with SPIN. In: SPIN 1995 Workshop Proceedings (1995)

    Google Scholar 

  7. 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)

    Chapter  Google Scholar 

  8. 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)

    Chapter  Google Scholar 

  9. 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)

    Google Scholar 

  10. Jensen, J., Joergensen, M., Klarlund, N., Schwartzbach, M.: Automatic verification of pointer programs using monadic second-order logic. In: PLDI 1997 (1997)

    Google Scholar 

  11. 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)

    Google Scholar 

  12. L4 eXperimental Kernel Reference Manual Version X.2 (2004), http://l4hq.org/docs/manuals/

  13. Liedtke, J.: On μ-kernel construction. In: 15th ACM Symposium on Operating System Principles (SOSP) (December 1995)

    Google Scholar 

  14. Mehta, F., Nipkow, T.: Proving pointer programs in higher-order logic. Information and Computation (2005) (To appear)

    Google Scholar 

  15. 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)

    Article  Google Scholar 

  16. 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)

    Google Scholar 

  17. Nipkow, T., Paulson, L.C., Wenzel, M.T.: Isabelle/HOL. LNCS, vol. 2283. Springer, Heidelberg (2002)

    Book  MATH  Google Scholar 

  18. Norrish, M.: C formalised in HOL. PhD thesis, Computer Laboratory, University of Cambridge (1998)

    Google Scholar 

  19. 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)

    Google Scholar 

  20. 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)

    Chapter  Google Scholar 

  21. System Architecture Group. The L4Ka:Pistachio microkernel. White paper, University of Karlsruhe (May 2003)

    Google Scholar 

  22. 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)

    Google Scholar 

  23. 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)

    Google Scholar 

  24. Walker, B., Kemmerer, R., Popek, G.: Specification and verification of the UCLA Unix security kernel. Communications of the ACM 23(2), 118–131 (1980)

    Article  MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics