Results 1 - 10
of
31
Wait-Free Synchronization
- ACM Transactions on Programming Languages and Systems
, 1993
"... A wait-free implementation of a concurrent data object is one that guarantees that any process can complete any operation in a finite number of steps, regardless of the execution speeds of the other processes. The problem of constructing a wait-free implementation of one data object from another lie ..."
Abstract
-
Cited by 660 (26 self)
- Add to MetaCart
A wait-free implementation of a concurrent data object is one that guarantees that any process can complete any operation in a finite number of steps, regardless of the execution speeds of the other processes. The problem of constructing a wait-free implementation of one data object from another lies at the heart of much recent work in concurrent algorithms, concurrent data structures, and multiprocessor architectures. In the first part of this paper, we introduce a simple and general technique, based on reduction to a consensus protocol, for proving statements of the form "there is no wait-free implementation of X by Y ." We derive a hierarchy of objects such that no object at one level has a wait-free implementation in terms of objects at lower levels. In particular, we show that atomic read/write registers, which have been the focus of much recent attention, are at the bottom of the hierarchy: they cannot be used to construct wait-free implementations of many simple and familiar da...
A methodology for implementing highly concurrent data structures
- In 2nd Symp. Principles & Practice of Parallel Programming
, 1990
"... A con.curren.t object is a data structure shared by concurrent processes. Conventional techniques for implementing concurrent objects typically rely on criticaI sections: ensuring that only one process at a time can operate on the object. Nevertheless, critical sections are poorly suited for asynchr ..."
Abstract
-
Cited by 295 (12 self)
- Add to MetaCart
A con.curren.t object is a data structure shared by concurrent processes. Conventional techniques for implementing concurrent objects typically rely on criticaI sections: ensuring that only one process at a time can operate on the object. Nevertheless, critical sections are poorly suited for asynchronous systems: if one process is halted or delayed in a critical section, other, non-faulty processes will be unable to progress. By contrast, a concurrent object implementation is non-blocking if it always guarantees that some process will complete an operation in a finite number of steps, and it is wait-free if it guarantees that each process will complete an operation in a finite number of steps. This paper proposes a new methodology for constructing non-blocking aud wait-free implementations of concurrent objects. The object’s representation and operations are written as st,ylized sequential programs, with no explicit synchronization. Each sequential operation is automatically transformed into a non-blocking or wait-free operation usiug novel synchronization and memory management algorithms. These algorithms are presented for a multiple instruction/multiple data (MIM D) architecture in which n processes communicate by applying read, write, and comparekYswa,p operations to a shared memory. 1
Lock-Free Linked Lists Using Compare-and-Swap
- In Proceedings of the Fourteenth Annual ACM Symposium on Principles of Distributed Computing
, 1995
"... Lock-free data structures implement concurrent objects without the use of mutual exclusion. This approach can avoid performance problems due to unpredictable delays while processes are within critical sections. Although universal methods are known that give lock-free data structures for any abstract ..."
Abstract
-
Cited by 84 (1 self)
- Add to MetaCart
Lock-free data structures implement concurrent objects without the use of mutual exclusion. This approach can avoid performance problems due to unpredictable delays while processes are within critical sections. Although universal methods are known that give lock-free data structures for any abstract data type, the overhead of these methods makes them inefficient when compared to conventional techniques using mutual exclusion, such as spin locks. We give lock-free data structures and algorithms for implementing a shared singly-linked list, allowing concurrent traversal, insertion, and deletion by any number of processes. We also show how the basic data structure can be used as a building block for other lock-free data structures. Our algorithms use the single word Compare-and-Swap synchronization primitive to implement the linked list directly, avoiding the overhead of universal methods, and are thus a practical alternative to using spin locks. 1 Introduction A concurrent object is an...
Implementing Lock-Free Queues
- In Proceedings of the Seventh International Conference on Parallel and Distributed Computing Systems, Las Vegas, NV
, 1994
"... We study practical techniques for implementing the FIFO queue abstract data type using lock-free data structures, which synchronize the operations of concurrent processes without the use of mutual exclusion. Two new algorithms based on linked lists and arrays are presented. We also propose a new sol ..."
Abstract
-
Cited by 49 (1 self)
- Add to MetaCart
We study practical techniques for implementing the FIFO queue abstract data type using lock-free data structures, which synchronize the operations of concurrent processes without the use of mutual exclusion. Two new algorithms based on linked lists and arrays are presented. We also propose a new solution to the ABA problem associated with the Compare&Swap instruction. The performance of our linked list algorithm is compared several other lock-free queue implementations, as well as more conventional locking techniques. 1 Introduction Concurrent access to a data structure shared among several processes must be synchronized in order to avoid conflicting updates. Conventionally this is done using mutual exclusion; processes modify the data structure only inside a critical section of code, within which the process is guaranteed exclusive access to the data structure. Typically, on a multiprocessor, critical sections are guarded with a spin-lock . We will refer to all methods using mutual ...
Wait-free Parallel Algorithms for the Union-Find Problem
- In Proc. 23rd ACM Symposium on Theory of Computing
, 1994
"... We are interested in designing efficient data structures for a shared memory multiprocessor. In this paper we focus on the Union-Find data structure. We consider a fully asynchronous model of computation where arbitrary delays are possible. Thus we require our solutions to the data structure problem ..."
Abstract
-
Cited by 45 (0 self)
- Add to MetaCart
We are interested in designing efficient data structures for a shared memory multiprocessor. In this paper we focus on the Union-Find data structure. We consider a fully asynchronous model of computation where arbitrary delays are possible. Thus we require our solutions to the data structure problem have the wait-free property, meaning that each thread continues to make progress on its operations, independent of the speeds of the other threads. In this model efficiency is best measured in terms of the total number of instructions used to perform a sequence of data structure operations, the work performed by the processors. We give a wait-free implementation of an efficient algorithm for Union-Find. In addition we show that the worst case performance of the algorithm can be improved by simulating a synchronized algorithm, or by simulating a larger machine if the data structure requests support sufficient parallelism. Our solutions apply to a much more general adversary model than has be...
Time- and Space-Efficient Randomized Consensus
- Journal of Algorithms
, 1992
"... A protocol is presented which solves the randomized consensus problem[9] for shared memory. The protocol uses a total of O(p 2 +n) worst-case expected increment, decrement and read operations on a set of three shared O(logn)-bit counters, where p is the number of active processors and n is the ..."
Abstract
-
Cited by 42 (12 self)
- Add to MetaCart
A protocol is presented which solves the randomized consensus problem[9] for shared memory. The protocol uses a total of O(p 2 +n) worst-case expected increment, decrement and read operations on a set of three shared O(logn)-bit counters, where p is the number of active processors and n is the total number of processors. It requires less space than previous polynomial-time consensus protocols[6, 7], and is faster when not all of the processors participate in the protocol. A modified version of the protocol yields a weak shared coin whose bias is guaranteed to be in the range 1=2 \Sigma ffl regardless of scheduler behavior, and which is the first such protocol for the shared-memory model to guarantee that all processors agree on the outcome of the coin. 1 1.
Robust wait-free hierarchies
- Journal of the ACM
, 1997
"... Abstract. The problem of implementing a shared object of one type from shared objects of other types has been extensively researched. Recent focus has mostly been on wait-free implementations, which permit every process to complete its operations on implemented objects, regardless of the speeds of o ..."
Abstract
-
Cited by 29 (0 self)
- Add to MetaCart
Abstract. The problem of implementing a shared object of one type from shared objects of other types has been extensively researched. Recent focus has mostly been on wait-free implementations, which permit every process to complete its operations on implemented objects, regardless of the speeds of other processes. It is known that shared objects of different types have differing abilities to support wait-free implementations. It is therefore natural to want to arrange types in a hierarchy that reflects their relative abilities to support wait-free implementations. In this paper, we formally define robustness and other desirable properties of hierarchies. Roughly speaking, a hierarchy is robust if each type is “stronger ” than any combination of lower level types. We study two specific hierarchies: r one, that we call hm, in which the level of a type is based on the ability of an unbounded number of r objects of that type, and another hierarchy, that we call h1, in which a type’s level is based on the ability of a fixed number of objects of that type. We prove that resource bounded hierarchies, such as r r h1 and its variants, are not robust. We also establish the unique importance of hm: every nontrivial r
Efficient Asynchronous Consensus with the Value-Oblivious Adversary Scheduler
- Automata, Languages and Programming, 23rd International Colloquium, volume 1099 of Lecture Notes in Computer Science
, 1996
"... We address the problem of asynchronous consensus. In view of the ~\Omega ) lower bound for consensus with the standard adversary scheduler [2], we examine the problem with other adversary models. We define the value-oblivious scheduler, which at all times has full knowledge of the entire stat ..."
Abstract
-
Cited by 15 (3 self)
- Add to MetaCart
We address the problem of asynchronous consensus. In view of the ~\Omega ) lower bound for consensus with the standard adversary scheduler [2], we examine the problem with other adversary models. We define the value-oblivious scheduler, which at all times has full knowledge of the entire state of system except for the actual random values generated and manipulated by the program, as long as they do not affect the dynamics of the system. We argue that the value-oblivious adversary model faithfully captures the possible sources of asynchrony in real-world systems. We present a randomized algorithm that achieves consensus in O(n log n) total work in the presence of a valueoblivious scheduler. Total work is defined as the total number of steps performed by all processors collectively. The amortized work per processor is thus O(log n). The expected contention on any register is O(1) and with high probability never do more than O(log n) processors try to access the same register concurrently.
Objects Shared by Byzantine Processes
, 2003
"... Work to date on algorithms for message-passing systems has explored a wide variety of types of faults, but corresponding work on shared memory systems has usually assumed that only crash faults are possible. In this work, we explore situations in which processes accessing shared objects can fail arb ..."
Abstract
-
Cited by 13 (2 self)
- Add to MetaCart
Work to date on algorithms for message-passing systems has explored a wide variety of types of faults, but corresponding work on shared memory systems has usually assumed that only crash faults are possible. In this work, we explore situations in which processes accessing shared objects can fail arbitrarily (Byzantine faults).
Resource Bounds and Combinations of Consensus Objects
- In Proceedings 12th Annual ACM Symposium on Principles of Distributed Computing
, 1993
"... The shared-memory model of computation typically provides processes with an arbitrary number of copies of the available object types; yet a simple argument shows that any consensus protocol can only make use of some finite subset of these. Thus we believe it is useful to consider the problem of cons ..."
Abstract
-
Cited by 9 (0 self)
- Add to MetaCart
The shared-memory model of computation typically provides processes with an arbitrary number of copies of the available object types; yet a simple argument shows that any consensus protocol can only make use of some finite subset of these. Thus we believe it is useful to consider the problem of consensus from the point of view of resource bounds, determining whether consensus can still be solved when the number of copies of the system's shared objects is limited. This approach leads to a general technique which we call the combination protocol, in which the number of processes that can achieve consensus with a given object increases as more copies of it are made available. Such a phenomenon brings up questions about the robustness of Herlihy's consensus hierarchy, in that objects are being combined to solve n-process consensus, even though no single copy can do so individually. We show how the ideas in the combination protocol appear even in situations where objects are not explicitly...

