共享内存与拜占庭原子寄存器算法解析
1. 共享内存算法基础
在共享内存的操作中,存在两种情况会影响数据的读写:
- 写操作崩溃情况 :若写进程在发送部分写消息后崩溃,它之前会向所有进程发送包含 (ts′, v′)
的预写消息。 N - f
个正确进程最终会将 (ts′, v′)
作为预写对存储,且之后不会更改。当它们将此值回复给读进程时, (ts′, v′)
是可信的,代表了对应正确进程回复的拜占庭法定人数的选定最大值,读操作返回 v′
。
- 读写操作的属性 :
- 有限写终止属性 :上述两种情况的论证表明算法满足有限写终止属性。
- 有效性属性 :对于读操作,假设最后一次完成的写操作使用了时间戳/值对 (ts, v)
,写进程可能后续写入了 ¯v
。读操作返回的值必须与时间戳 ts
或 ts + 1
相关联。由于至少 N - 2f > f
个正确进程在预写和写入对中存储了时间戳为 ts
或更高的值,当它们的 VALUE
消息到达读进程时, (ts, v)
或 (ts + 1, ¯v)
是可信的。读进程使用超过