Formal Verification of the Heap Manager of an Operating System Using Separation Logic
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.
KeywordsMemory Block Symbolic Execution Proof Assistant Allocation Function Separation Logic
Unable to display preview. Download preview PDF.
- 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
- 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