POSIX is a standard for operating systems, with a substantial part devoted to specifying file-system operations. File-system operations exhibit complex concurrent behaviour, comprising multiple actions affecting different parts of the state: typically, multiple atomic reads followed by an atomic update. However, the standard's description of concurrent behaviour is unsatisfactory: it is fragmented; contains ambiguities; and is generally under-specified. We provide a formal concurrent specification of POSIX file systems and demonstrate scalable reasoning for clients. Our specification is based on a concurrent specification language, which uses a modern concurrent separation logic for reasoning about abstract atomic operations, and an associated refinement calculus. Our reasoning about clients highlights an important difference between reasoning about modules built over a heap, where the interference on the shared state is restricted to the operations of the module, and modules built over a file system, where the interference cannot be restricted as the file system is a public namespace. We introduce specifications conditional on context invariants used to restrict the interference, and apply our reasoning to the example of lock files.
@InProceedings{ntzik_et_al:LIPIcs.ECOOP.2018.4, author = {Ntzik, Gian and da Rocha Pinto, Pedro and Sutherland, Julian and Gardner, Philippa}, title = {{A Concurrent Specification of POSIX File Systems}}, booktitle = {32nd European Conference on Object-Oriented Programming (ECOOP 2018)}, pages = {4:1--4:28}, series = {Leibniz International Proceedings in Informatics (LIPIcs)}, ISBN = {978-3-95977-079-8}, ISSN = {1868-8969}, year = {2018}, volume = {109}, editor = {Millstein, Todd}, publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik}, address = {Dagstuhl, Germany}, URL = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2018.4}, URN = {urn:nbn:de:0030-drops-92092}, doi = {10.4230/LIPIcs.ECOOP.2018.4}, annote = {Keywords: POSIX, concurrency, file systems, refinement, separation logic, atomicity} }
Feedback for Dagstuhl Publishing