原子对象实现与共享内存快照算法解析
1. 读写变量实现读写修改原子对象
在共享内存模型中,使用读写共享变量实现读写修改(Read-Modify-Write,RMW)原子对象是一个关键问题。如果不考虑容错,有简单的解决方案,如RMWfromR W算法:
- 将实现对象对应的RMW变量的最新值存于读写共享变量x中。
- 进程使用一组不同于x的读写共享变量,执行无锁互斥算法的尝试部分(如PetersonNP算法),以对原子对象进行操作。
- 当进程i进入互斥算法的临界区时,获得对x的独占访问权,先读再写完成RMW操作,最后执行互斥算法的退出部分。
然而,该算法不具备容错性,若进程在临界区失败,会阻止其他进程访问模拟的RMW变量。实际上,即使只容忍单个故障,也不存在使用读写共享变量实现RMW原子对象并保证1 - 故障终止的共享内存系统。
下面是相关证明的简要流程:
1. 假设存在这样的系统B。
2. 有RMWAgreement算法A,它在RMW共享内存模型中保证无等待终止,从而保证1 - 故障终止。
3. 对A应用转换,用B替换A中的单个共享RMW变量,得到系统Trans(A)。
4. 证明Trans(A)能解决一致性问题并保证1 - 故障终止,但这与读写共享内存模型中无法实现带1 - 故障终止的一致性算法相矛盾。
2. 共享内存的原子快照
在读写共享内存模型中,进程若能对共享内存的整个状态进行瞬时快照将非常有用,但该模型本身不直接提供此功能。下面将介绍如何实现这种快照,即快照原子对象。
超级会员免费看
订阅专栏 解锁全文
172万+

被折叠的 条评论
为什么被折叠?



