34、读写原子对象算法解析

读写原子对象算法解析

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值