Skip to main content

Formal Verification of the Heap Manager of an Operating System Using Separation Logic

  • Conference paper
Formal Methods and Software Engineering (ICFEM 2006)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 4260))

Included in the following conference series:

Abstract

In order to ensure memory properties of an operating system, it is important to verify the implementation of its heap manager. In the case of an existing operating system, this is a difficult task because the heap manager is usually written in a low-level language that makes use of pointers, and it is usually not written with verification in mind. In this paper, our main contribution is the formal verification of the heap manager of an existing embedded operating system, namely Topsy. For this purpose, we develop in the Coq proof assistant a library for separation logic, an extension of Hoare logic to deal with pointers. Using this library, we were able to verify the C source code of the Topsy heap manager, and to find and correct bugs.

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. Reynolds, J.C.: Separation Logic: A Logic for Shared Mutable Data Structures. In: 17th IEEE Symposium on Logic in Computer Science (LICS 2002). Invited lecture, pp. 55–74 (2002)

    Google Scholar 

  2. Ruf, L., et al.: TOPSY – A Teachable Operating System, http://www.topsy.net/

  3. Ruf, L., Jeker, C., Lutz, B., Plattner, B.: Topsy v3: A NodeOS For Network Processors. In: 2nd International Workshop on Active Network Technologies and Applications (ANTA) (2003)

    Google Scholar 

  4. Various contributors. The Coq Proof assistant, http://coq.inria.fr

  5. Marti, N., Affeldt, R., Yonezawa, A.: Towards Formal Verification of Memory Properties using Separation Logic. In: 22nd Workshop of the Japan Society for Software Science and Technology, JSSST (2005)

    Google Scholar 

  6. Affeldt, R., Marti, N.: Towards Formal Verification of Memory Properties using Separation Logic. Online CVS, http://savannah.nongnu.org/projects/seplog

  7. Yu, D., Hamid, N.A., Shao, Z.: Building Certified Libraries for PCC: Dynamic Storage Allocation. Science of Computer Programming 50(1-3), 101–127 (2004)

    Article  MATH  MathSciNet  Google Scholar 

  8. Weber, T.: Towards Mechanized Program Verification with Separation Logic. In: Marcinkowski, J., Tarlecki, A. (eds.) CSL 2004. LNCS, vol. 3210, pp. 250–264. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  9. Berdine, J., Calcagno, C., O’Hearn, P.W.: A Decidable Fragment of Separation Logic. In: Lodaya, K., Mahajan, M. (eds.) FSTTCS 2004. LNCS, vol. 3328, pp. 97–109. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  10. Berdine, J., Calcagno, C., O’Hearn, P.W.: Symbolic Execution with Separation Logic. In: Yi, K. (ed.) APLAS 2005. LNCS, vol. 3780, pp. 52–68. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  11. Schirmer, N.: A Verification Environment for Sequential Imperative Programs in Isabelle/HOL. In: Baader, F., Voronkov, A. (eds.) LPAR 2004. LNCS, vol. 3452, pp. 398–414. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  12. Mehta, F., Nipkow, T.: Proving Pointer Programs in Higher-Order Logic. Information and Computation 199, 200–227 (2005)

    Article  MATH  MathSciNet  Google Scholar 

  13. Tuch, H., Klein, G.: A Unified Memory Model for Pointers. In: Sutcliffe, G., Voronkov, A. (eds.) LPAR 2005. LNCS, vol. 3835, pp. 474–488. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  14. Filliâtre, J.-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 

  15. Hubert, T., Marché, C.: A case study of C source code verification: the Schorr-Waite algorithm. In: 3rd IEEE International Conference on Software Engineering and Formal Methods (SEFM 2005) (2005)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2006 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Marti, N., Affeldt, R., Yonezawa, A. (2006). Formal Verification of the Heap Manager of an Operating System Using Separation Logic. In: Liu, Z., He, J. (eds) Formal Methods and Software Engineering. ICFEM 2006. Lecture Notes in Computer Science, vol 4260. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11901433_22

Download citation

  • DOI: https://doi.org/10.1007/11901433_22

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-47460-9

  • Online ISBN: 978-3-540-47462-3

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics