In this paper, we present efficient implementations of strong shared memory primitives. We use the asynchronous shared memory model. In this model, processes communicate by applying primitive operations (e.g. Read, Write) to a shared memory. We define disjoint-access-parallel implementations. Intuitively, an implementation of shared memory primitives is disjoint-access-parallel, if processes which execute shared memory operations that access disjoint sets of words, progress concurrently, without interfering with each other (under an assumption described in the paper). Two commonly used primitives, both in theory and in practice, are Compare&Swap (C&S) and the pair Load Linked (LL) and Store Conditional (SC). We present an efficient, non-blocking, disjointaccess-parallel implementation of LL and SCn, using Read and C&S. SCn is a generalization of SC, which accesses n memory words. This implementation is constructed in three stages. We first present an implementation of LL, SC and an additional primitive, called Validate (VL), using Read and C&S. We then present an implementation of Read and C&Sn, using LL, SC and VL (C&Sn is a generalization of C&S, which accesses n memory words). Finally, we present an implementation of SCn, using Read and C&Sn. The work and space complexities of the implementations presented in this paper, improve the work and space complexities of previous works.
CITATION STYLE
Israeli, A., & Rappoport, L. (1994). Disjoint-access-parallel implementations of strong shared memory primitives. In Proceedings of the Annual ACM Symposium on Principles of Distributed Computing (Vol. Part F129432, pp. 151–160). Association for Computing Machinery. https://doi.org/10.1145/197917.198079
Mendeley helps you to discover research relevant for your work.