Abstract:
Motivated by advances in non-volatile memory technology, recent research in mutual exclusion has focused on algorithms for a shared memory model, in which failed processes can recover from crashes. Golab and Ramaraju [9] defined the recoverable mutual exclusion problem, where a process may crash during a mutual exclusion protocol. Upon crashing a process’s local memory is erased, and it starts a recovery procedure. The contents of the shared memory survives process failures.The most efficient n-process mutual exclusion algorithms from standard synchronization primitives have an RMR complexity of O(log n/(log log n)) [7, 11] per passage. Faster RMR complexity has only been achieved using artificially defined synchronization primitives, such as fetch-and-store-and-store, which are not available in actual systems [7, 10]. In this paper we present a mutual exclusion algorithm that uses only the standard primitives compare-and-swap and fetch-and-increment, which are available on common architectures, and achieves an amortized RMR complexity of O(1) per passage in the DSM and the CC model.