The synergy between non-blocking synchronization and operating system structure

Non-blocking synchronization has significant advantages over blocking synchronization: however, it has not been used to a significant degree in practice. We designed and implemented a multiprocessor operating system kernel and run-time library for high-performance, reliability and modularity. We used nonblocking synchronization, not because it was an objective in itself, but because it became the approach of choice. It was an attractive approach because of the synergy between other structuring techniques we used to achieve our primary goals and the benefits of non-blocking synchronization. This paper describes this synergy: the structuring techniques we used which facilitated non-blocking synchronization and our experience with this implementation.

[1]  Robert A. Kutter Optimizing memory-based messaging for scalable shared memory multiprocessor architectures , 1993 .

[2]  Amos Israeli,et al.  Efficient Wait-Free Implementation of a Concurrent Priority Queue , 1993, WDAG.

[3]  David R. Cheriton,et al.  Specializing object-oriented RPC for functionality and performance , 1996, Proceedings of 16th International Conference on Distributed Computing Systems.

[4]  David R. Cheriton,et al.  A caching model of operating system kernel functionality , 1995, OPSR.

[5]  Amos Israeli,et al.  Disjoint-access-parallel implementations of strong shared memory primitives , 1994, PODC '94.

[6]  Hendrik A. Goosen,et al.  Paradigm: a highly scalable shared-memory multicomputer architecture , 1991, Computer.

[7]  Calton Pu,et al.  A Lock-Free Multiprocessor OS Kernel , 1992, OPSR.

[8]  Nir Shavit,et al.  Software transactional memory , 1995, PODC '95.

[9]  Philip Heidelberger,et al.  Multiple reservations and the Oklahoma update , 1993, IEEE Parallel & Distributed Technology: Systems & Applications.

[10]  Mark Moir,et al.  Universal constructions for multi-object operations , 1995, PODC '95.

[11]  Maged M. Michael,et al.  Simple, fast, and practical non-blocking and blocking concurrent queue algorithms , 1996, PODC '96.

[12]  Edward W. Felten,et al.  Performance issues in non-blocking synchronization on shared-memory multiprocessors , 1992, PODC '92.

[13]  Maurice Herlihy,et al.  Transactional Memory: Architectural Support For Lock-free Data Structures , 1993, Proceedings of the 20th Annual International Symposium on Computer Architecture.

[14]  Joseph Heinrich MIPS R4000 user's manual , 1993 .

[15]  John D. Valois Lock-free linked lists using compare-and-swap , 1995, PODC '95.

[16]  Dennis Shasha,et al.  Locking without blocking: making lock based concurrent data structure algorithms nonblocking , 1992, PODS '92.

[17]  Maurice Herlihy,et al.  A methodology for implementing highly concurrent data objects , 1993, TOPL.

[18]  Josep Torrellas,et al.  Characterizing the caching and synchronization performance of a multiprocessor operating system , 1992, ASPLOS V.

[19]  Eric A. Brewer,et al.  PROTEUS: a high-performance parallel-architecture simulator , 1992, SIGMETRICS '92/PERFORMANCE '92.

[20]  Greg Barnes,et al.  A method for implementing lock-free shared-data structures , 1993, SPAA '93.

[21]  David R. Cheriton,et al.  The V distributed system , 1988, CACM.

[22]  Maurice Herlihy,et al.  Wait-free synchronization , 1991, TOPL.

[23]  Brian N. Bershad,et al.  Practical considerations for non-blocking concurrent objects , 1993, [1993] Proceedings. The 13th International Conference on Distributed Computing Systems.