skip to main content
research-article

A separation logic for refining concurrent objects

Published:26 January 2011Publication History
Skip Abstract Section

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.

Skip Supplemental Material Section

Supplemental Material

24-mpeg-4.mp4

References

  1. R. J. Back and J. von Wright. Refinement calculus: a systematic introduction. Springer, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. S. Brookes. Full abstraction for a shared variable parallel language. Information and Computation, 127(2):145--163, 1996.Google ScholarGoogle ScholarCross RefCross Ref
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. T. Dinsdale-Young, M. Dodds, P. Gardner, M. Parkinson, and V. Vafeiadis. Concurrent abstract predicates. In ECOOP, June 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. T. Elmas, S. Qadeer, and S. Tasiran. A calculus of atomic actions. In POPL, pages 2--15. ACM, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. X. Feng. Local rely-guarantee reasoning. In POPL, pages 315--327. ACM, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. I. Filipović, P. O'Hearn, N. Rinetzky, and H. Yang. Abstraction for concurrent objects. In ESOP, pages 252--266. Springer, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. L. Groves. Reasoning about nonblocking concurrency. JUCS, 15(1):72--111, 2009.Google ScholarGoogle Scholar
  10. M. Herlihy and N. Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. M. P. Herlihy and J. M. Wing. Linearizability: a correctness condition for concurrent objects. TOPLAS, 12(3):463--492, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. C. B. Jones. Tentative steps toward a development method for interfering programs. TOPLAS, 5(4):596--619, 1983. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. A. Kock. Strong functors and monoidal monads. Archiv der Mathematik, 23:113--120, 1971. ISSN 1.Google ScholarGoogle ScholarCross RefCross Ref
  14. R. J. Lipton. Reduction: a method of proving properties of parallel programs. Commun. ACM, 18(12):717--721, 1975. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. B. Liskov and S. Zilles. Programming with abstract data types. In Symposium on Very high level languages, pages 50--59. ACM, 1974. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. R. Milner. A Calculus of Communicating Systems. Springer-Verlag New York, Inc., 1982. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. J. C. Mitchell and G. D. Plotkin. Abstract types have existential type. TOPLAS, 10(3):470--502, 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle Scholar
  21. C. Morgan and T. Vickers. On the refinement calculus. Springer, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. J. H. Morris, Jr. Protection in programming languages. CACM, 16(1):15--21, 1973. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. P. W. O'Hearn. Resources, concurrency, and local reasoning. Theor. Comput. Sci., 375(1--3):271--307, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. M. Parkinson and G. Bierman. Separation logic and abstraction. POPL, 40(1):247--258, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. D. Sangiorgi and D. Walker. Pi-Calculus: A Theory of Mobile Processes. Cambridge University Press, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. R. K. Treiber. Systems programming: coping with parallelism. Technical report, Almaden Research Center, 1986.Google ScholarGoogle Scholar
  27. V. Vafeiadis. Modular fine-grained concurrency verification. PhD thesis, University of Cambridge, 2008.Google ScholarGoogle Scholar
  28. V. Vafeiadis and M. Parkinson. A marriage of rely/guarantee and separation logic. In CONCUR, pages 256--271. Springer, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. R. J. van Glabbeek. The linear time - branching time spectrum. In CONCUR, pages 278--297. Springer, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. A separation logic for refining concurrent objects

              Recommendations

              Comments

              Login options

              Check if you have access through your login credentials or your institution to get full access on this article.

              Sign in

              Full Access

              PDF Format

              View or Download as a PDF file.

              PDF

              eReader

              View online with eReader.

              eReader
              About Cookies On This Site

              We use cookies to ensure that we give you the best experience on our website.

              Learn more

              Got it!