Abstract
Fine-grained concurrent data structures are crucial for gaining performance from multiprocessing, but their design is a subtle art. Recent literature has made large strides in verifying these data structures, using either atomicity refinement or separation logic with rely-guarantee reasoning. In this paper we show how the ownership discipline of separation logic can be used to enable atomicity refinement, and we develop a new rely-guarantee method that is localized to the definition of a data structure. We present the first semantics of separation logic that is sensitive to atomicity, and show how to control this sensitivity through ownership. The result is a logic that enables compositional reasoning about atomicity and interference, even for programs that use fine-grained synchronization and dynamic memory allocation.
Supplemental Material
- R. J. Back and J. von Wright. Refinement calculus: a systematic introduction. Springer, 1998. Google Scholar
Digital Library
- S. Brookes. Full abstraction for a shared variable parallel language. Information and Computation, 127(2):145--163, 1996.Google Scholar
Cross Ref
- C. Calcagno, P. W. O'Hearn, and H. Yang. Local action and abstract separation logic. In LICS, pages 366--378. IEEE Computer Society, 2007. Google Scholar
Digital Library
- T. Dinsdale-Young, M. Dodds, P. Gardner, M. Parkinson, and V. Vafeiadis. Concurrent abstract predicates. In ECOOP, June 2010. Google Scholar
Digital Library
- T. Elmas, S. Qadeer, and S. Tasiran. A calculus of atomic actions. In POPL, pages 2--15. ACM, 2009. Google Scholar
Digital Library
- T. Elmas, S. Qadeer, A. Sezgin, O. Subasi, and S. Tasiran. Simplifying linearizability proofs with reduction and abstraction. In TACAS, pages 296--311. Springer, 2010. Google Scholar
Digital Library
- X. Feng. Local rely-guarantee reasoning. In POPL, pages 315--327. ACM, 2009. Google Scholar
Digital Library
- I. Filipović, P. O'Hearn, N. Rinetzky, and H. Yang. Abstraction for concurrent objects. In ESOP, pages 252--266. Springer, 2009. Google Scholar
Digital Library
- L. Groves. Reasoning about nonblocking concurrency. JUCS, 15(1):72--111, 2009.Google Scholar
- M. Herlihy and N. Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, 2008. Google Scholar
Digital Library
- M. P. Herlihy and J. M. Wing. Linearizability: a correctness condition for concurrent objects. TOPLAS, 12(3):463--492, 1990. Google Scholar
Digital Library
- C. B. Jones. Tentative steps toward a development method for interfering programs. TOPLAS, 5(4):596--619, 1983. Google Scholar
Digital Library
- A. Kock. Strong functors and monoidal monads. Archiv der Mathematik, 23:113--120, 1971. ISSN 1.Google Scholar
Cross Ref
- R. J. Lipton. Reduction: a method of proving properties of parallel programs. Commun. ACM, 18(12):717--721, 1975. Google Scholar
Digital Library
- B. Liskov and S. Zilles. Programming with abstract data types. In Symposium on Very high level languages, pages 50--59. ACM, 1974. Google Scholar
Digital Library
- M. M. Michael. Hazard pointers: Safe memory reclamation for lock-free objects. IEEE Transactions on Parallel and Distributed Systems, 15:491--504, 2004. ISSN 1045--9219. Google Scholar
Digital Library
- M. M. Michael and M. L. Scott. Nonblocking algorithms and preemption-safe locking on multiprogrammed shared memory multiprocessors. J. Parallel Distrib. Comput., 51(1):1--26, 1998. Google Scholar
Digital Library
- R. Milner. A Calculus of Communicating Systems. Springer-Verlag New York, Inc., 1982. Google Scholar
Digital Library
- J. C. Mitchell and G. D. Plotkin. Abstract types have existential type. TOPLAS, 10(3):470--502, 1988. Google Scholar
Digital Library
- M. Moir and N. Shavit. Concurrent data structures. In Handbook of Data Structures and Applications, D. Metha and S. Sahni Editors, pages 47--14--47--30, 2007. Chapman and Hall/CRC Press.Google Scholar
- C. Morgan and T. Vickers. On the refinement calculus. Springer, 1993. Google Scholar
Digital Library
- J. H. Morris, Jr. Protection in programming languages. CACM, 16(1):15--21, 1973. Google Scholar
Digital Library
- P. W. O'Hearn. Resources, concurrency, and local reasoning. Theor. Comput. Sci., 375(1--3):271--307, 2007. Google Scholar
Digital Library
- M. Parkinson and G. Bierman. Separation logic and abstraction. POPL, 40(1):247--258, 2005. Google Scholar
Digital Library
- D. Sangiorgi and D. Walker. Pi-Calculus: A Theory of Mobile Processes. Cambridge University Press, 2001. Google Scholar
Digital Library
- R. K. Treiber. Systems programming: coping with parallelism. Technical report, Almaden Research Center, 1986.Google Scholar
- V. Vafeiadis. Modular fine-grained concurrency verification. PhD thesis, University of Cambridge, 2008.Google Scholar
- V. Vafeiadis and M. Parkinson. A marriage of rely/guarantee and separation logic. In CONCUR, pages 256--271. Springer, 2007. Google Scholar
Digital Library
- R. J. van Glabbeek. The linear time - branching time spectrum. In CONCUR, pages 278--297. Springer, 1990. Google Scholar
Digital Library
Index Terms
A separation logic for refining concurrent objects
Recommendations
A separation logic for refining concurrent objects
POPL '11: Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languagesFine-grained concurrent data structures are crucial for gaining performance from multiprocessing, but their design is a subtle art. Recent literature has made large strides in verifying these data structures, using either atomicity refinement or ...
Proving correctness of highly-concurrent linearisable objects
PPoPP '06: Proceedings of the eleventh ACM SIGPLAN symposium on Principles and practice of parallel programmingWe study a family of implementations for linked lists using fine-grain synchronisation. This approach enables greater concurrency, but correctness is a greater challenge than for classical, coarse-grain synchronisation. Our examples are demonstrative of ...
A program logic for concurrent objects under fair scheduling
POPL '16: Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming LanguagesExisting work on verifying concurrent objects is mostly concerned with safety only, e.g., partial correctness or linearizability. Although there has been recent work verifying lock-freedom of non-blocking objects, much less efforts are focused on ...







Comments