Abstract

A concurrent system consists of processes communicating via shared objects. Examples of shared object types include data structures such as r e g i s t e r , queue, and t r ee , and synchronization primitives such as t e s t ~ s e t , and compaxe~suap. Even though different processes may concurrently access a shared object, the object must behave as if all these accesses occur in some sequential order. More precisely, the behavior of a shared object must be linearizable [9]. One way to ensure linearizability is to implement shared objects using critical sections [5]. This approach, however, is not fault-tolerant: The crash of a process while in the critical section of a shared object can permanently prevent the rest of the processes from accessing that object. This lack of fault-tolerance led to the concept of wait-free implementations of shared objects [11, 16, 7]. Informally, an implementation of a shared object is wait-free if every process can complete every operation on that object in a finite number of its own steps, regardless of the execution speeds of the remaining processes. Thus, a concurrent system in which all implementations of shared objects are wait-free is resilient to process crashes. Most implementations in the literature build complex registers from simpler ones [1, 2, 3, 10, 12, 14, 16, 15, 18, 19, 20, 21], while the others are related to consensus objects [13, 4]. The bigger picture emerged when Herlihy discovered a close connection between wait-free implementations and objects of a particular type called cons ensus 1. In [7], he presented a "universal" construction that transforms the sequential implementation of an object into a wait-free concurrent implementation using only consensus objects and registers. He also showed that analysing primitives in terms of their ability to implement consensus objects helps order primitives

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call