Nothing Special   »   [go: up one dir, main page]

skip to main content
research-article

Expressive modular fine-grained concurrency specification

Published: 26 January 2011 Publication History

Abstract

Compared to coarse-grained external synchronization of operations on data structures shared between concurrent threads, fine-grained, internal synchronization can offer stronger progress guarantees and better performance. However, fully specifying operations that perform internal synchronization modularly is a hard, open problem. The state of the art approaches, based on linearizability or on concurrent abstract predicates, have important limitations on the expressiveness of specifications. Linearizability does not support ownership transfer, and the concurrent abstract predicates-based specification approach requires hardcoding a particular usage protocol. In this paper, we propose a novel approach that lifts these limitations and enables fully general specification of fine-grained concurrent data structures. The basic idea is that clients pass the ghost code required to instantiate an operation's specification for a specific client scenario into the operation in a simple form of higher-order programming.
We machine-checked the theory of the paper using the Coq proof assistant. Furthermore, we implemented the approach in our program verifier VeriFast and used it to verify two challenging fine-grained concurrent data structures from the literature: a multiple-compare-and-swap algorithm and a lock-coupling list.

Supplementary Material

MP4 File (26-mpeg-4.mp4)

References

[1]
Richard Bornat, Cristiano Calcagno, Peter O'Hearn, and Matthew Parkinson. Permission accounting in separation logic. In POPL, 2005.
[2]
Markus Dahlweid, Michal Moskal, Thomas Santen, Stephan Tobies, and Wolfram Schulte. VCC: Contract-based modular verification of concurrent C. In ICSE, 2009.
[3]
Thomas Dinsdale-Young, Mike Dodds, Philippa Gardner, Matthew Parkinson, and Viktor Vafeiadis. Concurrent abstract predicates. In ECOOP, 2010.
[4]
Alexey Gotsman, Josh Berdine, Byron Cook, Noam Rinetzky, and Mooly Sagiv. Local reasoning for storable locks and threads. In APLAS, 2007.
[5]
Tim Harris, Keir Fraser, and Ian A. Pratt. A practical multi-word compare-and-swap operation. In 16th International Symposium on Distributed Computing, 2002.
[6]
Maurice Herlihy and Jeanette Wing. Linearizability: A correctness condition for concurrent objects. ACM TOPLAS, 12(3), 1990.
[7]
Bart Jacobs and Frank Piessens. Expressive modular fine-grained concurrency specification (extended version). Technical Report CW590, Dept. CS, K. U. Leuven, 2010.
[8]
Bart Jacobs, Jan Smans, and Frank Piessens. A quick tour of the VeriFast program verifier. In APLAS, 2010.
[9]
C. B. Jones. Specification and design of (parallel) programs. In IFIP Congress, 1983.
[10]
K. Rustan M. Leino, Peter Müller, and Jan Smans. Foundations of Security Analysis and Design V, FOSAD 2007/2008/2009 Tutorial Lectures, volume 5705 of LNCS, chapter Verification of concurrent programs with Chalice. Springer, 2009.
[11]
Peter W. O'Hearn, John Reynolds, and Hongseok Yang. Local reasoning about programs that alter data structures. In CSL, 2001.
[12]
Susan Owicki and David Gries. Verifying properties of parallel programs: An axiomatic approach. CACM, 19(5):279--285, May 1976.
[13]
Susan Owicki and David Gries. An axiomatic proof technique for parallel programs i. Acta Inf., 6, 1976.
[14]
J. C. Reynolds. Separation logic: a logic for shared mutable data structures. In LICS, 2002.
[15]
Viktor Vafeiadis. Modular fine-grained concurrency verification. PhD thesis, Computer Laboratory, University of Cambridge, July 2007.
[16]
Viktor Vafeiadis. Automatically proving linearizability. In CAV, 2010.
[17]
Viktor Vafeiadis and Matthew Parkinson. A marriage of rely/guarantee and separation logic. In CONCUR, 2007.

Cited By

View all
  • (2021)Deductive Synthesis of Programs with Pointers: Techniques, Challenges, OpportunitiesComputer Aided Verification10.1007/978-3-030-81685-8_5(110-134)Online publication date: 15-Jul-2021
  • (2020)Flow2Vec: value-flow-based precise code embeddingProceedings of the ACM on Programming Languages10.1145/34283014:OOPSLA(1-27)Online publication date: 13-Nov-2020
  • (2020)Koord: a language for programming and verifying distributed robotics applicationProceedings of the ACM on Programming Languages10.1145/34283004:OOPSLA(1-30)Online publication date: 13-Nov-2020
  • Show More Cited By

Index Terms

  1. Expressive modular fine-grained concurrency specification

    Recommendations

    Comments

    Please enable JavaScript to view thecomments powered by Disqus.

    Information & Contributors

    Information

    Published In

    cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 46, Issue 1
    POPL '11
    January 2011
    624 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/1925844
    Issue’s Table of Contents
    • cover image ACM Conferences
      POPL '11: Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
      January 2011
      652 pages
      ISBN:9781450304900
      DOI:10.1145/1926385
    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: 26 January 2011
    Published in SIGPLAN Volume 46, Issue 1

    Check for updates

    Author Tags

    1. fine-grained concurrency
    2. separation logic

    Qualifiers

    • Research-article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)35
    • Downloads (Last 6 weeks)7
    Reflects downloads up to 23 Nov 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2021)Deductive Synthesis of Programs with Pointers: Techniques, Challenges, OpportunitiesComputer Aided Verification10.1007/978-3-030-81685-8_5(110-134)Online publication date: 15-Jul-2021
    • (2020)Flow2Vec: value-flow-based precise code embeddingProceedings of the ACM on Programming Languages10.1145/34283014:OOPSLA(1-27)Online publication date: 13-Nov-2020
    • (2020)Koord: a language for programming and verifying distributed robotics applicationProceedings of the ACM on Programming Languages10.1145/34283004:OOPSLA(1-30)Online publication date: 13-Nov-2020
    • (2020)Termination analysis for evolving programs: an incremental approach by reusing certified modulesProceedings of the ACM on Programming Languages10.1145/34282674:OOPSLA(1-27)Online publication date: 13-Nov-2020
    • (2020)Scalable and serializable networked multi-actor programmingProceedings of the ACM on Programming Languages10.1145/34282664:OOPSLA(1-30)Online publication date: 13-Nov-2020
    • (2020)CompCertELF: verified separate compilation of C programs into ELF object filesProceedings of the ACM on Programming Languages10.1145/34282654:OOPSLA(1-28)Online publication date: 13-Nov-2020
    • (2020)Random testing for C and C++ compilers with YARPGenProceedings of the ACM on Programming Languages10.1145/34282644:OOPSLA(1-25)Online publication date: 13-Nov-2020
    • (2020)Automatic and efficient variability-aware lifting of functional programsProceedings of the ACM on Programming Languages10.1145/34282254:OOPSLA(1-27)Online publication date: 13-Nov-2020
    • (2020)The anchor verifier for blocking and non-blocking concurrent softwareProceedings of the ACM on Programming Languages10.1145/34282244:OOPSLA(1-29)Online publication date: 13-Nov-2020
    • (2020)CAMP: cost-aware multiparty session protocolsProceedings of the ACM on Programming Languages10.1145/34282234:OOPSLA(1-30)Online publication date: 13-Nov-2020
    • Show More Cited By

    View Options

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media