我正在学习分布式系统中的顺序一致性,但却无法理解所解释的术语。如果有人能够解释为什么下面的(a)和(c)是顺序一致的,而(b)不是,那么我会很感激。 感谢。
答案 0 :(得分:4)
执行e
操作是顺序一致的,如果它可以被置换为这些操作的序列s
,那么:
序列s
尊重每个流程的程序顺序。也就是说,对于同一流程中的任意两个操作o1
和o2
,如果o1
位于o2
中的e
之前,那么o1
应为放在o2
之前s
;
s
中的,每个读操作都返回同一个变量上最后一次写操作的值。
对于(a),s
可以是:
W(x)b [P2], R(x)b [P3], R(x)b [P4], W(x)a [P1], R(x)a [P3], R(x)a [P4]
对于(c),s
可以是:
W(x)a [P1], R(x)a [P2], R(x)a [P3], R(x)a [P4], W(x)b [P3], R(x)b [P1], R(x)b [P2], R(x)b [P4]
然而,对于(b):
来自R(x)b, R(x)a
的操作P3
要求W(x)b
<{1}}
来自W(x)a
的操作R(x)a, R(x)b
要求P4
<{1}}
不可能构建这样的序列W(x)a
。