Fair Synchronization in the Presence of Process Crashes and its Weakest Failure Detector
Résumé
A non-blocking implementation of a concurrent
object is an implementation that does not prevent concurrent
accesses to the internal representation of the object, while
guaranteeing the deadlock-freedom progress condition without
using locks. Considering a failure free context, G. Taubenfeld
has introduced (DISC 2013) a simple modular approach,
captured under a new problem called the fair synchronization
problem, to transform a non-blocking implementation into
a starvation-free implementation satisfying a strong fairness
requirement. This paper extends this approach in several
directions. It first generalizes the fair synchronization problem
to read/write asynchronous systems where any number of
processes may crash. Then, it introduces a new failure detector
and uses it to solve the fair synchronization problem when
processes may crash. This failure detector, denoted QP (Quasi
Perfect), is very close to, but strictly weaker than, the perfect
failure detector. Last but not least, the paper shows that the
proposed failure detector QP is optimal in the sense that the
information on failures it provides to the processes can be
extracted from any algorithm solving the fair synchronization
problem in the presence of any number of process crash
failures.