Limits on the power of concurrent-write parallel machines
STOC '86 Proceedings of the eighteenth annual ACM symposium on Theory of computing
Consensus in the presence of partial synchrony
Journal of the ACM (JACM)
Relations between concurrent-write models of parallel computation
SIAM Journal on Computing
Fast randomized consensus using shared memory
Journal of Algorithms
Wait-free data structures in the asynchronous PRAM model
SPAA '90 Proceedings of the second annual ACM symposium on Parallel algorithms and architectures
Concurrent timestamping made simple
ISTCS'92 Symposium proceedings on Theory of computing and systems
Atomic snapshots of shared memory
Journal of the ACM (JACM)
Are wait-free algorithms fast?
Journal of the ACM (JACM)
Atomic Snapshots in O (n log n) Operations
SIAM Journal on Computing
The time complexity of updating snapshot memories
Information Processing Letters
Linear-Time Snapshot Using Multi-writer Multi-reader Registers
WDAG '94 Proceedings of the 8th International Workshop on Distributed Algorithms
A tight time lower bound for space-optimal implementations of multi-writer snapshots
Proceedings of the thirty-fifth annual ACM symposium on Theory of computing
Distributed Computing
Single-scanner multi-writer snapshot implementations are fast!
Proceedings of the twenty-fifth annual ACM symposium on Principles of distributed computing
How hard is it to take a snapshot?
SOFSEM'05 Proceedings of the 31st international conference on Theory and Practice of Computer Science
Hi-index | 0.00 |
A snapshot is an important object in distributed computing whose implementation in asynchronous systems has been studied extensively. It consists of a collection of m 1 components, each storing a value, and supports two atomic operations: an UPDATE of a specified component's value and a SCAN of all components to determine their values at some point in time.In this paper, we investigate implementations of a multiwriter snapshot object in a synchronous shared memory model. In this setting, we show that a snapshot object can be efficiently implemented and prove a tight tradeoff between the complexity of the SCAN and the UPDATE operations. First, we describe a wait-free implementation that performs UPDATE in O(1) time and SCAN in O(m) time, using only slightly more than twice the amount of space needed to simply store the m values. We also describe a variant that performs UPDATE in O(1) time and SCAN in O(n) time.Second, we describe a wait-free implementation that performs UPDATE in O(log m) time and SCAN in O(1) time, and a variant that performs UPDATE in O(log n) time and SCAN in O(1) time.Third, we show how to combine these implementations to realize two implementations that perform UPDATE in Θ(log(m/c)) time and SCAN in Θ(c) time, for 1≤c≤m, or perform UPDATE in Θ(log(n/c)) time and SCAN in Θ(c) time, for 1≤c≤n. This implies that Time[UPDATE] ∈O(log(minm,n/Time[SCAN])). We also prove that Time[UPDATE] ∈ Ω(log(minm,n/Time[SCAN]) ), which matches our upper bound.