Linearizability: a correctness condition for concurrent objects

A concurrent object is a data object shared by concurrent processes. Linearizability is a correctness condition for concurrent objects that exploits the semantics of abstract data types. It permits a high degree of concurrency, yet it permits programmers to specify and reason about concurrent objects using known techniques from the sequential domain. Linearizability provides the illusion that each operation applied by concurrent processes takes effect instantaneously at some point between its invocation and its response, implying that the meaning of a concurrent object's operations can be given by pre- and post-conditions. This paper defines linearizability, compares it to other correctness conditions, presents and demonstrates a method for proving the correctness of implementations, and shows how to reason about concurrent objects, given they are linearizable.

[1]  C. A. R. Hoare,et al.  Monitors: an operating system structuring concept , 1974, CACM.

[2]  John V. Guttag,et al.  The specification and application to programming of abstract data types. , 1975 .

[3]  S. Owicki,et al.  Verifying properties of parallel programs: an axiomatic approach , 1976, CACM.

[4]  Irving L. Traiger,et al.  The notions of consistency and predicate locks in a database system , 1976, CACM.

[5]  John H. Howard Proving monitors , 1976, CACM.

[6]  Joseph A. Goguen,et al.  Putting Theories Together to Make Specifications , 1977, IJCAI.

[7]  Ellis Horowitz,et al.  Abstract data types and software validation , 1978, CACM.

[8]  Leonidas J. Guibas,et al.  A dichromatic framework for balanced trees , 1978, 19th Annual Symposium on Foundations of Computer Science (sfcs 1978).

[9]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[10]  Leslie Lamport,et al.  How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs , 2016, IEEE Transactions on Computers.

[11]  Christos H. Papadimitriou,et al.  The serializability of concurrent database updates , 1979, JACM.

[12]  Cliff B. Jones,et al.  Software development - a rigorous approach , 1980, Prentice Hall international series in computer science.

[13]  Willem P. de Roever,et al.  A Proof System for Communicating Sequential Processes , 1980, ACM Trans. Program. Lang. Syst..

[14]  Zohar Manna,et al.  Verification of concurrent programs, Part I: The temporal framework , 1981 .

[15]  S. B. Yao,et al.  Efficient locking for concurrent operations on B-trees , 1981, TODS.

[16]  Leslie Lamport,et al.  Proving Liveness Properties of Concurrent Programs , 1982, TOPL.

[17]  Larry Rudolph,et al.  Basic Techniques for the Efficient Coordination of Very Large Numbers of Cooperating Sequential Processors , 1983, TOPL.

[18]  David P. Reed,et al.  Implementing atomic actions on decentralized data , 1983, TOCS.

[19]  Henry Ledgard,et al.  Reference Manual for the ADA® Programming Language , 1983, Springer New York.

[20]  Leslie Lamport,et al.  Specifying Concurrent Program Modules , 1983, TOPL.

[21]  Ray Ford,et al.  Concurrency control mechanisms and the serializability of concurrent tree algorithms , 1984, PODS '84.

[22]  Glynn Winskel,et al.  Seminar on Concurrency , 1984, Lecture Notes in Computer Science.

[23]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Specification 1 , 1985, EATCS Monographs on Theoretical Computer Science.

[24]  Duncan H. Lawrie,et al.  Guest Editor's Introduction Experiences with Distributed Systems , 1985, IEEE Softw..

[25]  Stephen D. Brookes,et al.  An Axiomatic Treatment of a Parallel Programming Language , 1985, Logic of Programs.

[26]  James J. Horning,et al.  The Larch Family of Specification Languages , 1985, IEEE Software.

[27]  Jayadev Misra Axioms for memory access in asynchronous hardware systems , 1986, TOPL.

[28]  Yehoshua Sagiv Concurrent Operations on B*-Trees with Overtaking , 1986, J. Comput. Syst. Sci..

[29]  W. P. de Roever,et al.  Proving monitors revisited : a first step towards verifying object oriented systems , 1986 .

[30]  Larry Rudolph,et al.  Efficient synchronization of multiprocessors with shared memory , 1988, TOPL.

[31]  Maurice Herlihy,et al.  Dynamic quorum adjustment for partitioned data , 1987, TODS.

[32]  James C. Browne,et al.  Simultaneous Update of Priority Structures , 1987, ICPP.

[33]  Maurice Herlihy,et al.  Axioms for concurrent objects , 1987, POPL '87.

[34]  Larry Rudolph,et al.  Efficient synchronization of multiprocessors with shared memory , 1986, PODC '86.

[35]  Colin Stirling,et al.  A Generalization of Owicki-Gries's Hoare Logic for a Concurrent while Language , 1988, Theor. Comput. Sci..

[36]  Martín Abadi,et al.  The existence of refinement mappings , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[37]  Maurice Herlihy,et al.  Impossibility and universality results for wait-free synchronization , 1988, PODC '88.

[38]  William E. Weihl,et al.  Local atomicity properties: modular concurrency control for abstract data types , 1989, TOPL.