读写原子对象算法解析
1. 读写原子对象问题概述
在共享内存多处理器中,读写共享变量(寄存器)是最基本的构建块之一。我们的目标是使用功能较弱的寄存器(如单写者/单读者寄存器)来实现功能强大的多写者/多读者寄存器,也就是实现多写者/多读者读写原子对象。
固定一个域 $V$ 和初始值 $v_0 \in V$。对于一个 $m$ 写者/$p$ 读者的读写原子对象,端口 $1, \cdots, m$ 是写端口,端口 $m + 1, \cdots, m + p$ 是读端口,令 $n = m + p$。为了区分用户在端口提交的高级读写操作和对读写共享变量执行的低级读写操作,我们将高级操作的名称大写。与端口 $i$($1 \leq i \leq m$)相关的有 $WRITE(v)_i$ 输入($v \in V$)和 $ACK_i$ 输出;与端口 $j$($m + 1 \leq j \leq n$)相关的有 $READ_j$ 输入和 $v_j$ 输出($v \in V$),还有 $STOP_i$ 输入($1 \leq i \leq n$)。我们将使用一个有 $n$ 个进程的共享内存系统来实现这样的原子对象,每个进程对应一个端口,且所有实现都保证无等待终止。
2. 展示原子性的引理
有一个技术引理可用于展示读写原子对象外部接口的一系列动作是否满足读写对象的原子性属性。
设 $\beta$ 是读写原子对象外部接口的(有限或无限)动作序列,假设 $\beta$ 对每个 $i$ 都是格式良好的,且不包含未完成的操作。令 $\Pi$ 是 $\beta$ 中所有操作的集合,假设 $\prec$ 是 $\Pi$ 中所有操作的非自反偏序,满足以下性质:
1.
超级会员免费看
订阅专栏 解锁全文
176万+

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



