异步共享内存中的一致性与原子对象
1. 读写修改共享内存中的一致性问题
在异步共享内存系统中,一致性问题是一个关键的研究领域。对于读写共享内存,解决一致性问题存在一定的困难,但使用读写修改(Read-Modify-Write)共享内存则能更轻松地解决该问题,甚至只需一个读写修改共享变量即可。
1.1 读写修改共享内存的证明与构造
通过引理 12.7 可以构造一个无故障的公平输入优先执行过程,在此过程中,没有进程能够做出决策,这与无故障终止的要求相矛盾。构造过程始于一个双价初始化(由引理 12.3 保证其存在性),然后按轮询顺序反复扩展当前执行过程,每次扩展至少包含一个进程的一步操作,同时保持双价性并避免故障。由于每个进程都会执行无限多步,所以最终的执行过程是公平的,但没有进程能做出决策,从而产生矛盾。
1.2 RMWAgreement 算法
该算法使用一个初始值为“unknown”的共享变量。每个进程访问该变量时,若看到值为“unknown”,则将其改为自己的初始值并以此值作为决策;若看到值为 v(v 属于值集合 V),则不改变变量值,而是接受该值作为决策。该算法的进程 i 的前置条件 - 效果代码与示例 9.1.1 类似,同时增加了处理故障的代码。例如,状态中增加了一个“stopped”集合,用于记录停止的进程。新的“stopi”操作会将进程 i 加入“stopped”集合,而“accessi”和“decidei”操作的前置条件是进程 i 不在“stopped”集合中,“initi”操作也只有在进程 i 不在“stopped”集合中时才会进行修改。
定理 12.9 表明,RMWAgreement 算法能够解决一
超级会员免费看
订阅专栏 解锁全文

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



