Recoverable algorithms tolerate failures and recoveries of processes by using non-volatile memory. Of particular interest are self-implementations of key operations, in which a recoverable operation is implemented from its non-recoverable counterpart (in addition to reads and writes). This paper presents two self-implementations of the SWAP operation. One works in the system-wide failures model, where all processes fail and recover together, and the other in the independent failures model, where each process crashes and recovers independently of the other processes. Both algorithms are wait-free in crash-free executions, but their recovery code is blocking. We prove that this is inherent for the independent failures model. The impossibility result is proved for implementations of distinguishable operations using interfering functions, and in particular, it applies to a recoverable self-implementation of swap.
翻译:可恢复算法通过使用非易失性存储器来容忍进程的故障与恢复。其核心关注点在于关键操作的自实现,即可恢复操作由其不可恢复的对应操作(外加读写操作)实现。本文提出了两种SWAP操作的自实现方案:一种适用于系统级故障模型(所有进程同时故障与恢复),另一种适用于独立故障模型(各进程独立崩溃与恢复)。两种算法在无崩溃执行中均为无等待(wait-free)的,但其恢复代码具有阻塞性。我们证明这一特性在独立故障模型中具有内在必然性。该不可能性结果针对使用干扰函数(interfering functions)的可区分操作实现进行证明,且特别适用于可恢复的swap自实现。