算法案例的形式化分析:读写系统、分布式重排与互斥算法
1. 读写算法分析
1.1 算法概述
在对读写算法的研究中,有两个算法需要证明其正确性,并且要验证它们的三个重要属性:排他性写入、并发读取和演进性。为了便于技术处理,这两个算法的位置在图 72.1 和图 72.3 中进行了重新命名。
1.2 算法 24:2 的分析
1.2.1 排他性写入和并发读取的证明
- 排他性写入 :通过位置不变式 $e_R(D) + F + K = R$(其中 $e_R(x) := R$ 对于每个 $x \in W$),可以直接得出 $|D| \leq 1$,这意味着不会有两个写入进程同时进行写入操作。同时,该不变式还表明如果有一个进程正在写入($D = x$),那么就不会有进程正在读取($K = 0$)。
- 并发读取 :可以通过对算法 72:1 的交错运行的前缀 $w$ 来证明。$w$ 的操作序列为 $e(r_1); \cdots; e(r_n); f(r_1); \cdots; f(r_n); g(r_1); \cdots; g(r_n)$,其中 $R = {r_1; \cdots; r_n}$。$w$ 终止于一个状态 $a$,且 $a \models K(R)$,即所有读取进程都在进行读取操作。
1.2.2 写入进程演进性的证明
写入进程的演进性表示为 $\Pi_{72:1} \models B:x \leadsto D:x$。其证明主要基于属性 $\Pi_{72:1} \model
超级会员免费看
订阅专栏 解锁全文

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



