顺序一致性:分布式共享内存的一致性条件探究
1. 顺序一致性概述
顺序一致性是分布式共享内存的一种一致性条件,它比原子性(线性化)更弱。直观来说,若一组进程访问并发对象的执行结果能通过在单处理器系统上执行(借助调度器)产生,那么该计算就是顺序一致的。这意味着在顺序一致的执行中,所有进程的操作看起来像是按某种顺序依次执行的,且每个进程的操作在这个总顺序中按其程序指定的顺序出现。
1.1 形式化定义
1.1.1 顺序一致的计算
一个计算 OP 是顺序一致的,需满足存在一个顺序计算 S,使得:
- OP 和 S 等价(即没有进程能区分 OP 和 S)。
- S 是合法的(尊重每个对象的规范)。
原子性是顺序一致性加上一个与实时顺序相关的条件。任何原子性的计算必然是顺序一致的,但反之不成立。
例如,涉及两个进程和两个寄存器 R、R′ 的计算,序列 S = R.writej(1),R′.writej(5),R.readj() →1,R.writei(2),R′.readi() →5,R.readi() →2 是合法的,且尊重每个进程的操作顺序,所以该计算是顺序一致的,但不尊重不同进程操作的实时发生顺序,因此不是原子的。
1.1.2 顺序一致的对象
给定一个计算 OP 和一个对象 X,如果 OP|X(即从 OP 中去除所有不在 X 上的操作)是顺序一致的,那么对象 X 在 OP 中就是顺序一致的。
1.2 顺序一致性不是局部属性
原子一致性是局部属性,原子对象可以自由组合,但顺序一致对象并非如此。
超级会员免费看
订阅专栏 解锁全文
26

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



