Mutual exclusion is one of the most commonly used techniques to handle contention in concurrent systems. Traditionally, mutual exclusion algorithms have been designed under the assumption that a process does not fail while acquiring/releasing a lock or while executing its critical section. However, failures do occur in real life, potentially leaving the lock in an inconsistent state. This gives rise to the problem of recoverable mutual exclusion (RME) that involves designing a mutual exclusion (ME) algorithm that can tolerate failures, while maintaining safety and liveness properties. In this work, we present a framework that transforms any algorithm that solves the RME problem into an algorithm that can also simultaneously adapt to (1) the number of processes competing for the lock, as well as (2) the number of failures that have occurred in the recent past, while maintaining the correctness and performance properties of the underlying RME algorithm. Additionally, the algorithm constructed as a result of this transformation adds certain desirable properties like fairness (a variation of FCFS) and bounded recovery. Assume that the worst-case RMR complexity of a critical section request in the underlying RME algorithm is $R(n)$. Then, our framework yields an RME algorithm for which the worst-case RMR complexity of a critical section request is given by $\mathcal{O}(\min \{\ddot{c}, \sqrt{F+1}, R(n)\})$, where $\ddot{c}$ denotes the point contention of the request and $F$ denotes the number of failures in the recent past of the request. We further extend our framework by presenting a novel memory reclamation algorithm to bound the worst-case space complexity of the RME algorithm. The memory reclamation techniques maintain the fairness, performance and correctness properties of our transformation and is general enough to be employed to bound the space of other RME algorithms.
翻译:相互排斥是处理同时系统争议的最常用技术之一。 传统上, 相互排斥算法的设计所依据的假设是, 在获取/ 释放锁或执行关键部分时, 程序不会失败, 但是在现实生活中确实发生故障, 可能使锁处于一个不一致的状态。 这就产生了可回收的相互排斥( RME) 问题, 包括设计一种可以容忍失败的相互排斥( ME) 算法, 同时保持安全和活性特性。 在这项工作中, 我们提出了一个框架, 将解决 RME 问题的任何失败算法转换成一个算法, 可以同时适应(1) 与锁竞争的流程数量, 以及(2) 最近发生的失败数量, 同时又保持了基本的 RME 算法的正确性和性性能。 此外, 由于这种转变而构建的算法增加了某些可取性, 比如公平性( FCFFS 的变异) 和 捆绑定的恢复。 假设RME 算法中最坏的 RMRR 的复杂性是 美元 。 然后, 我们的 RME 最坏的内变法 的内变法 由 RMR 的 RM 的内 的最近的变法 由 Rma 的 Rma 最复杂要求 。 R. d 的 R. d 由 R. d 的 R. d d 的 R. d d d 向 向 向的 R.