A formalism, not based upon atomic actions, for specifying and reasoning aboutconcurrent systems is deﬁned. It is used to specify several classes of interprocesscommunication mechanisms and to prove the correctness of algorithms for imple-menting them.
Capsule Review by Andrei Broder
Concurrent systems are customarily described hierarchically, each level being in-tended to implement the level above it. On each level certain actions are consideredatomic with respect to that level, although they decompose into a set of actionsat a lower level. Furthermore there are cases when, for eﬃciency purposes, theircomponents might be interleaved in time at a lower level with no loss of semanticcorrectess, despite the fact that the atomicity speciﬁed on the higher level is notrespected. In this paper a very clean formalism is developed that allows a cohe-sive description of the diﬀerent levels and axiomatic proofs of the implementationproperties, without using the atomic action concept.
Capsule Review by Paul McJones
A common approach to dealing with concurrency is to introduce primitives allowingthe programmer to think in terms of the more familiar sequential model. Forexample, database transactions and linguistic constructs for mutual exclusion suchas the monitor give a process the illusion that there is no concurrency. In contrast,Part II of this paper presents the approach of designing and verifying algorithmsthat work in the face of manifest concurrency.Starting from some seemingly minimal assumptions about the nature of com-munication between asynchronous processes, the author proposes a classiﬁcation of twelve partially-ordered kinds of single-writer shared registers. He provides con-structions for implementing many of these classes from “weaker” ones, culminatingin a multi-value, single-reader, atomic register. The constructions are proved bothinformally and using the formalism of Part I.Much of the paper is of a theoretical nature. However, its ideas are worthstudy by system builders. For example, its algorithms and veriﬁcation techniquescould be of use in designing a “conventional” synchronization mechanism (e.g. asemaphore) for a multiprocessor system. A more exciting possibility would be toextend its approach to the design of a higher level concurrent algorithm such astaking a snapshot of an online database.