Abstract
This paper presents a case study in modeling and verifying a POSIX-like file store for Flash memory. This work fits in the context of Hoare’s verification challenge and, in particular, Joshi and Holzmann’s mini-challenge to build a verifiable file store. We have designed a simple robust file store and implemented it in the form of a Promela model. A test harness is used to exercise the file store in a number of ways. Model checking technology has been extensively used to verify the correctness of our implementation. A distinguishing feature of our approach is the (bounded) exhaustive verification of power loss recovery.
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
ABZ conference: case study details, http://www.cs.york.ac.uk/circus/mc/abz/
ABZ conference (October 2008), http://www.abz2008.org/
Arkoudas, K.: Athena, http://www.cag.csail.mit.edu/~kostas/dpls/athena/
Arkoudas, K., Zee, K., Kuncak, V., Rinard, M.: On verifying a file system implementation. In: Davies, J., Schulte, W., Barnett, M. (eds.) ICFEM 2004. LNCS, vol. 3308, pp. 373–390. Springer, Heidelberg (2004)
Bicarregui, J.C., Hoare, C.A.R., Woodcock, J.C.P.: The verified software repository: a step towards the verifying compiler. Formal Aspects of Computing 18(2), 143–151 (2006)
Butler, M.: Some filestore developments with Event-B and RODIN. In: Workshop at ICFEM (2007)
Butterfield, A., Woodcock, J.: Formalising flash memory: First steps. In: ICECCS, pp. 251–260 (2007)
Chang, Y.-H., Hsieh, J.-W., Kuo, T.-W.: Endurance enhancement of flash-memory storage systems: an efficient static wear leveling design. In: DAC 2007: Proceedings of the 44th annual conference on Design automation, pp. 212–217. ACM, New York (2007)
Dijkstra, E.W.: Notes on structured programming. In: Dahl, O.J., Dijkstra, E.W., Hoare, C.A.R. (eds.) structured programming, Ch. 1, pp. 1–82. Academic Press, London (1972)
Ferreira, M.A., Silva, S.S., Oliveira, J.N.: Verifying Intel Flash file system core specification. In: Modelling and Analysis in VDM: Proceedings of the Fourth VDM/Overture Workshop. Newcastle University, CS-TR-1099 (May 2008)
Freitas, L., Fu, Z., Woodcock, J.: Posix file store in Z/Eves: an experiment in the verified software repository. In: ICECCS, pp. 3–14 (2007)
Freitas, L., Woodcock, J., Butterfield, A.: POSIX and the verification grand challenge: a roadmap. In: 13th Int’l Conference on Engineering Complex Computer Systems (ICECCS 2008). IEEE, Los Alamitos (2008)
Galloway, A., Lüttgen, G., Mühlberg, J.T., Siminiceanu, R.I.: Model-checking the Linux virtual file system. In: Jones, N.D., Müller-Olm, M. (eds.) VMCAI 2009. LNCS, vol. 5403, pp. 74–88. Springer, Heidelberg (2009)
Grand Challenge 6, http://vsr.sourceforge.net/gc6index.htm
Groce, A., Holzmann, G., Joshi, R.: Randomized differential testing as a prelude to formal verification. In: ICSE 2007: Proceedings of the 29th Int’l conference on Software Engineering, pp. 621–631. IEEE Computer Society, Los Alamitos (2007)
Henzinger, T.A., et al.: Temporal safety-proofs for systems code. In: Brinksma, E., Larsen, K.G. (eds.) CAV 2002. LNCS, vol. 2404, pp. 526–538. Springer, Heidelberg (2002)
Hoare, T., Misra, J.: Verified software: theories, tools, experiments (July 2005), http://vstte.ethz.ch
Holzmann, G.J.: Promela language reference, http://www.spinroot.com/spin/Man/promela.html
Holzmann, G.J., Bošnački, D.: The design of a multi-core extension of the Spin model checker. IEEE Transactions on Software Engineering 33(10) (October 2007)
Holzmann, G.J.: An improved reachability analysis technique. Software Practice and Experience 18, 137–161 (1988)
Holzmann, G.J.: State compression in SPIN. In: Proc. Third SPIN Workshop, Twente University, The Netherlands (1997)
Holzmann, G.J.: The SPIN Model Checker: Primer and Reference Manual. Addison-Wesley Professional, Reading (2003)
Holzmann, G.J., Joshi, R., Groce, A.: New challenges in model checking. In: Grumberg, O., Veith, H. (eds.) 25 Years of Model Checking. LNCS, vol. 5000, pp. 65–76. Springer, Heidelberg (2006)
Holzmann, G.J., Puri, A.: A minimized automaton representation of reachable states. Software Tools for Technology Transfer 2(3), 270–278 (1999)
Houston, I., King, S.: CICS project report: Experiences and results from the use of Z. In: Prehn, S., Toetenel, H. (eds.) VDM 1991. LNCS, vol. 551, pp. 588–596. Springer, Heidelberg (1991)
ICFEM Flash File System Workshop. Modelling Flash Memory (November 2007)
Intel Corporation. Intel Flash File System Core Reference Guide, version 1 edition (October 2004)
Jackson, D.: Software Abstractions. The MIT-Press, Cambridge (2006)
Jones, C., O’Hearn, P., Woodcock, J.: Verified software: A grand challenge. IEEE Computer: Software Technologies 39(4), 93–95 (2006)
Joshi, R., Holzmann, G.J.: A mini challenge: build a verifiable filesystem. Formal Aspects of Computing 19(2), 269–272 (2007)
Kang, E., Jackson, D.: Formal modeling and analysis of a flash filesystem in Alloy. In: Börger, E., Butler, M., Bowen, J.P., Boca, P. (eds.) ABZ 2008. LNCS, vol. 5238, pp. 294–308. Springer, Heidelberg (2008)
Liu, Z., Yue, L., Wei, P., Jin, P., Xiang, X.: An adaptive block-set based management for large-scale flash memory. In: SAC 2009: Proceedings of the, ACM symposium on Applied Computing, pp. 1621–1625. ACM, New York (2009)
Morgan, C., Sufrin, B.: Specification of the UNIX filing system. IEEE Trans. Software Eng. 10(2), 128–142 (1984)
Mühlberg, J.T., Lüttgen, G.: Blasting Linux code. In: Brim, L., Haverkort, B.R., Leucker, M., van de Pol, J. (eds.) FMICS 2006 and PDMC 2006. LNCS, vol. 4346, pp. 211–226. Springer, Heidelberg (2007)
Part 1: Base definitions POSIX. ISO/IEC 9945-1:2003
Part 2: System Interfaces POSIX. ISO/IEC 9945-2:2003
Ruys, T.C.: Towards Effective Model Checking. PhD thesis, University of Twente, Enschede (March 2001)
Spivey, J.M.: The Z notation: a reference manual. Prentice-Hall, Inc., Upper Saddle River (1989)
Taverne, P.: Raffs: Model checking a robust abstract flash file store. Master’s thesis, Delft University of Technology (2009), http://repository.tudelft.nl/view/ir/uuid%3A2b4a1434-8169-481d-9824-fe79e9c4874c
Verified software repository, http://vsr.sourceforge.net
Verified software: Theories, tools, experiments (October 2005), http://vstte.inf.ethz.ch/
Yang, J., Twohey, P., Engler, D., Musuvathi, M.: Using model checking to find serious file system errors. ACM Trans. Comput. Syst. 24(4), 393–423 (2006)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2009 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Taverne, P., Pronk, C.(. (2009). RAFFS: Model Checking a Robust Abstract Flash File Store. In: Breitman, K., Cavalcanti, A. (eds) Formal Methods and Software Engineering. ICFEM 2009. Lecture Notes in Computer Science, vol 5885. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-10373-5_12
Download citation
DOI: https://doi.org/10.1007/978-3-642-10373-5_12
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-10372-8
Online ISBN: 978-3-642-10373-5
eBook Packages: Computer ScienceComputer Science (R0)