首页 > 未分类 > 存储一致性之弱一致性(Weak Consistency)

存储一致性之弱一致性(Weak Consistency)

2011年5月6日 sigma 发表评论 阅读评论

弱一致性WC(Week Consistency)模型的提出,是人们观察到大多数并行程序排定几个进程对数据存取次序时都需要使用同步操作;而在同步操作之间,一个进程所进行的数据存取操作次序对其他进程会是不可见的。例如,某进程对同步变量实施加锁后进入临界段,已在临界段内所做的存储器数据读写操作,由于互斥性其他进程根本看不到,更不用说读写操作次序了。

只是在此进程解锁退出临界段,其对共享变量所做的修改结果应立即被其他进程所看到,基于上述观察,我们可放宽对非同步读写操作次序的限制而只对同步存储器操作施加顺序一致性,来解决存储器一致性问题。

Dubois等(1986)定义这种使用同步变量来部分地定义的一致性模型为弱一致性:

weak consistency, by saying that it has three properties:

  1. Accesses to synchronization variables are sequentially consistent.
  2. No access to a synchronization variable is allowed to be performed until all previous writes have completed everywhere.
  3. No data access ( read or write ) is allowed to be performed until all previous accesses to synchronization variables have been performed.

中译为:

弱一致性,它有三个属性:

a. 对同步变量的访问是顺序一致的;

b. 在所有先前的写操作完成之前,不能访问同步变量;

c. 在先前所有同步变量的访问完成前,不能访问(读或写)数据。

弱一致性要求同步访问(访问要求执行同步操作)是顺序一致的。在一个同步访问可以被执行之前,所有以前正常的数据访问必须完成。在一个正常的数据访问可以被执行之前,所有以前同步访问必须完成。这实质上把一致性问题留给程序员决定。在一个同步操作之后,内存将立即是一致的。

第一点指出所有过程以相同顺序看到对同步变量进行的所有操作。即,如果进程P1调用synchronize(S1),与此同时进程P2调用synchronize(S2),那么,实际效果好象是synchronize(S1)发生在synchronize(S2) 之前,或synchronize(S2)发生在synchronize(S1) 之前,但所有进程看到同样的顺序。实际上,一个同步变量的访问将立即被广播出去。在广播发送结束之前,任意其他进程不能访问其他同步变量。

第二点指出访问同步变量“刷新了管道”,它强迫在所有拷贝上完成所有程序中的写操作。其中包括正在执行的、部分完成的或已经在某些本地拷贝上完成却未在其它拷贝上完成的写操作。同步访问开始前,应保证先前所有的写操作已完成。在更新共享数据后做同步操作,进程可迫使将新值传遍到该存储的所有其它本地拷贝。

第三点指出访问一般(即非同步)变量,不管是读是写,只有在所有前序的同步操作结束后方可进行。在读共享数据前做同步操作,可以保证进程读到最新值。

从应用的角度来说,软件和存储器的协议指出,只有当访问同步变量时,存储器才需更新;新的写操作可以在前一写操作完成之前开始,在一些情况下可完全避免写。当然,此协议加重了编程人员的负担,但换来了优越的性能。

不同于以往的存储器模型,它是对一组操作的一致性约束,而不是单独的读或写。当很少单独而基本上以簇的形式(短时间内有很多访问,每一访问时间都不长)访问共亨变量时,这个模型更为有用。

弱一致性存在这样的问题,即当访问同步变量时,存储器并不知道这是因为进程已完成对共享数据的写操作还是要开始读共享数据。因此,它必须执行这两种情况要求的操作,也就是它要确保本地启动的写操作都已完成(即发送到其他所有的拷贝),同时还要收集其他机器执行的写操作。

弱一致性的示意图如下:

本文作者: Sigma    在新浪微博关注SigmaSigmaWeibo    RSS订阅本博客
本文链接: http://www.sigma.me/2011/05/06/weak-consistency.html
本博客采用知识共享署名—非商业性-禁止演绎使用3.0协议进行许可,转载请保留作者和原文链接。

  1. xueguoqing
    2014年8月16日19:25 | #1

    你好博主 我想问一下最后那个图的S是同步的意思吗?

  1. 本文目前尚无任何 trackbacks 和 pingbacks.

无觅相关文章插件,快速提升流量