DocumentCode
971168
Title
Hazard pointers: safe memory reclamation for lock-free objects
Author
Michael, Maged M.
Author_Institution
IBM Thomas J. Watson Res. Center, Yorktown Heights, NY, USA
Volume
15
Issue
6
fYear
2004
fDate
6/1/2004 12:00:00 AM
Firstpage
491
Lastpage
504
Abstract
Lock-free objects offer significant performance and reliability advantages over conventional lock-based objects. However, the lack of an efficient portable lock-free method for the reclamation of the memory occupied by dynamic nodes removed from such objects is a major obstacle to their wide use in practice. We present hazard pointers, a memory management methodology that allows memory reclamation for arbitrary reuse. It is very efficient, as demonstrated by our experimental results. It is suitable for user-level applications - as well as system programs - without dependence on special kernel or scheduler support. It is wait-free. It requires only single-word reads and writes for memory access in its core operations. It allows reclaimed memory to be returned to the operating system. In addition, it offers a lock-free solution for the ABA problem using only practical single-word instructions. Our experimental results on a multiprocessor system show that the new methodology offers equal and, more often, significantly better performance than other memory management methods, in addition to its qualitative advantages regarding memory reclamation and independence of special hardware support. We also show that lock-free implementations of important object types, using hazard pointers, offer comparable performance to that of efficient lock-based implementations under no contention and no multiprogramming, and outperform them by significant margins under moderate multiprogramming and/or contention, in addition to guaranteeing continuous progress and availability, even in the presence of thread failures and arbitrary delays.
Keywords
data structures; multiprocessing systems; multiprogramming; operating system kernels; processor scheduling; storage management; synchronisation; arbitrary delay; concurrent programming; dynamic data structure; dynamic node; hazard pointers; lock-free object; memory management; multiprocessor system; multiprogramming; operating system; safe memory reclamation; scheduler support; single-word instruction; system program; thread failure; user-level application; Availability; Hardware; Hazards; Kernel; Memory management; Multiprocessing systems; Operating systems; Quality management; Read-write memory; Yarn; 65; Lock-free; concurrent programming; dynamic data structures.; memory management; multiprogramming; synchronization;
fLanguage
English
Journal_Title
Parallel and Distributed Systems, IEEE Transactions on
Publisher
ieee
ISSN
1045-9219
Type
jour
DOI
10.1109/TPDS.2004.8
Filename
1291819
Link To Document