Non-blocking synchronization (NBS) has significant advantages over blocking synchronization in areas of fault-tolerance, system structure, portability, and performance. These advantages gain importance with the increased use of parallelism and multiprocessors, and as delays increase relative to processor speed. This thesis demonstrates that non-blocking synchronization is practical as the sole co-ordination mechanism in systems by showing that careful OS design eases implementation of efficient NBS, by demonstrating that DCAS (Double-Compare-and-Swap) is the necessary and sufficient primitive for implementing NBS, and by demonstrating that efficient hardware DCAS is practical for RISC processors. This thesis presents high-performance non-blocking implementations of common data-structures sufficient to implement an operating system kernel. I also present more general algorithms: non-blocking implementations of \casn\ and software transactional memory. Both have overhead proportional to the number of writes, support multi\--objects, and use a DCAS-based contention-reduction technique that is fault-tolerant and OS-independent yet performs as well as the best previously published techniques. I demonstrate that proposed OS implementations of DCAS are inefficient, and propose a design for efficient hardware DCAS specific to the R4000 but generalizable to other RISC processors.
Cited By
- Fraser K and Harris T (2007). Concurrent programming without locks, ACM Transactions on Computer Systems, 25:2, (5-es), Online publication date: 1-May-2007.
- Hudson R, Saha B, Adl-Tabatabai A and Hertzberg B McRT-Malloc Proceedings of the 5th international symposium on Memory management, (74-83)
- Shalev O and Shavit N (2006). Split-ordered lists, Journal of the ACM, 53:3, (379-405), Online publication date: 1-May-2006.
- Hendler D, Shavit N and Yerushalmi L A scalable lock-free stack algorithm Proceedings of the sixteenth annual ACM symposium on Parallelism in algorithms and architectures, (206-215)
- Shalev O and Shavit N Split-ordered lists Proceedings of the twenty-second annual symposium on Principles of distributed computing, (102-111)
- Greenwald M How to wait when you are not going to block Proceedings of the twenty-first annual symposium on Principles of distributed computing, (256-256)
- Greenwald M Two-handed emulation Proceedings of the twenty-first annual symposium on Principles of distributed computing, (260-269)
- Blelloch G, Cheng P and Gibbons P Room synchronizations Proceedings of the thirteenth annual ACM symposium on Parallel algorithms and architectures, (122-133)
- Agesen O, Detlefs D, Flood C, Garthwaite A, Martin P, Shavit N and Steele G DCAS-based concurrent deques Proceedings of the twelfth annual ACM symposium on Parallel algorithms and architectures, (137-146)
Recommendations
Grasping the gap between blocking and non-blocking transactional memories
Transactional memory (TM) is an inherently optimistic abstraction: it allows concurrent processes to execute sequences of shared-data accesses (transactions) speculatively, with an option of aborting them in the future. Early TM designs avoided using ...
Safe Non-blocking Synchronization in Ada2x
Reliable Software Technologies – Ada-Europe 2018AbstractThe mutual-exclusion property of locks stands in the way to scalability of parallel programs on many-core architectures. Locks do not allow progress guarantees, because a task may fail inside a critical section and keep holding a lock that blocks ...