skip to main content
article

Permission accounting in separation logic

Published:12 January 2005Publication History
Skip Abstract Section

Abstract

A lightweight logical approach to race-free sharing of heap storage between concurrent threads is described, based on the notion of permission to access. Transfer of permission between threads, subdivision and combination of permission is discussed. The roots of the approach are in Boyland's [3] demonstration of the utility of fractional permissions in specifying non-interference between concurrent threads. We add the notion of counting permission, which mirrors the programming technique called permission counting. Both fractional and counting permissions permit passivity, the specification that a program can be permitted to access a heap cell yet prevented from altering it. Models of both mechanisms are described. The use of two different mechanisms is defended. Some interesting problems are acknowledged and some intriguing possibilities for future development, including the notion of resourcing as a step beyond typing, are paraded.

References

  1. R. Bornat. Proving pointer programs in Hoare logic. In R. C. Backhouse and J. N. Oliveira, editors, Mathematics of Program Construction, 5th International Conference, LNCS, pages 102--126. Springer, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. R. Bornat, C. Calcagno, and P. O'Hearn. Local reasoning, separation and aliasing. SPACE Workshop, Venice, 2004.]]Google ScholarGoogle Scholar
  3. J. Boyland. Checking interference with fractional permissions. In R. Cousot, editor, Static Analysis: 10th International Symposium, volume 2694 of Lecture Notes in Computer Science, pages 55--72, Berlin, Heidelberg, New York, 2003. Springer.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. P. Brinch Hansen. Operating System Principles. Prentice Hall, 1973.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. P. Brinch Hansen, editor. The Origin of Concurrent Programming. Springer-Verlag, 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. S. D. Brookes. A semantics for concurrent separation logic. In CONCUR'04: 15th International Conference on Concurrency Theory, volume 3170 of Lecture Notes in Computer Science, pages 16--34, London, August 2004. Springer. Extended version to appear in Theoretical Computer Science.]]Google ScholarGoogle ScholarCross RefCross Ref
  7. R. Burstall. Some techniques for proving correctness of programs which alter data structures. Machine Intelligence, 7:23--50, 1972.]]Google ScholarGoogle Scholar
  8. P. J. Courtois, F. Heymans, and D. L. Parnas. Concurrent control with "readers" and "writers". Commun. ACM, 14(10):667--668, 1971.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. E. W. Dijkstra. Cooperating sequential processes. In F. Genuys, editor, Programming Languages, pages 43--112. Academic Press, 1968. Reprinted in {5}.]]Google ScholarGoogle Scholar
  10. R. Ennals, R. Sharp, and A. Mycroft. Linear types for packet processing. In To appear. Proceedings of the 2004 European Symposium on Programming (ESOP), LNCS. Springer-Verlag, 2004.]]Google ScholarGoogle Scholar
  11. C. A. R. Hoare. Towards a theory of parallel programming. In Hoare and Perrott, editors, in, ed. Operating System Techniques, 1972., pages 61--71. Academic Press, 1972.]]Google ScholarGoogle Scholar
  12. E. J. Johnson and A. Kunze. IXP2400/2800 Programming: The Complete Microengine Coding Guide. Intel Press, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. P. O'Hearn. Notes on separation logic for shared-variable concurrency. unpublished, Jan. 2002.]]Google ScholarGoogle Scholar
  14. P. O'Hearn, J. Reynolds, and H. Yang. Local reasoning about programs that alter data structures. In L. Fribourg, editor, CSL 2001, pages 1--19. Springer-Verlag, 2001. LNCS 2142.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. P. W. O'Hearn. Resources, concurrency and local reasoning. to appear in Theoretical Computer Science; preliminary version published as {16}.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. P. W. O'Hearn. Resources, concurrency and local reasoning. In CONCUR'04: 15th International Conference on Concurrency Theory, volume 3170 of Lecture Notes in Computer Science, pages 49--67, London, August 2004. Springer. Extended version is {15}.]]Google ScholarGoogle Scholar
  17. P. W. O'Hearn and D. J. Pym. The logic of bunched implications. Bulletin of Symbolic Logic, 5(2):215--244, June 1999.]]Google ScholarGoogle ScholarCross RefCross Ref
  18. D. Pym. The Semantics and Proof Theory of the Logic of Bunched Implications, volume 26 of Applied Logic Series. Kluwer Academic Publishers, 2002.]]Google ScholarGoogle Scholar
  19. J. Reynolds. Separation logic: a logic for shared mutable data structures. Invited Paper, LICS'02, 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. J. C. Reynolds. Intuitionistic reasoning about shared mutable data structure. In J. Davies, B. Roscoe, and J. Woodcock, editors, Millennial Perspectives in Computer Science, pages 303--321. Palgrave, 2000.]]Google ScholarGoogle Scholar
  21. H. Yang and P. O'Hearn. A semantic basis for local reasoning. In 5th FOSSACS, pages 402--416. Springer-Verlag, 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Permission accounting in separation logic

                    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

                    • Published in

                      cover image ACM SIGPLAN Notices
                      ACM SIGPLAN Notices  Volume 40, Issue 1
                      Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
                      January 2005
                      391 pages
                      ISSN:0362-1340
                      EISSN:1558-1160
                      DOI:10.1145/1047659
                      Issue’s Table of Contents
                      • cover image ACM Conferences
                        POPL '05: Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
                        January 2005
                        402 pages
                        ISBN:158113830X
                        DOI:10.1145/1040305
                        • General Chair:
                        • Jens Palsberg,
                        • Program Chair:
                        • Martín Abadi

                      Copyright © 2005 ACM

                      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

                      Publisher

                      Association for Computing Machinery

                      New York, NY, United States

                      Publication History

                      • Published: 12 January 2005

                      Check for updates

                      Qualifiers

                      • article

                    PDF Format

                    View or Download as a PDF file.

                    PDF

                    eReader

                    View online with eReader.

                    eReader