分布式操作系统6.pptVIP

  • 7
  • 0
  • 约6.15千字
  • 约 25页
  • 2016-12-25 发布于重庆
  • 举报
6。3 一致性模型 在DSM系统中,每个只读页可以有多个拷贝,而每个可写页只能有一个拷贝。在最简单的实现方案中,机器远程访问一可写页会激活陷拼,然后获取该页。由于可写页经常共享,因此只允许有一个拷贝可能会带来严重的性能瓶颈。 只要能更新所有拷贝,允许多重拷贝就可以简化性能问题。但这又引起了新的问题:即如何保证所有拷贝的一致性。当拷贝分布于不同机器上,而机器间通信只能通过慢速的(和存储器速度相比)网络发送信包来完成时,维护绝对的一致性就显得尤其困难。 一致性模型本质上是软件与存储器间的协约问题 它指的是,如果软件遵守约定的规则,存储器就能工作正常。如果软件违反了这些规定,存储器就不再保证操作的正确性。有些对软件只有少量限制,而有些则使普通编程几乎成为不可能。限制少的模型没有限制多的模型执行效果好。 严格一致性 (Strict Consistency) 最严格的一致性模型称为严格一致性,它由下述条件定义:从存储器地址x处读出的值为最近写入x的值。这个定义自然而明白,由于它假定了绝对全局时间的存在,“最近”访问的意义是明确的。传统意义上,单一处理机遵守严格一致性。 在一系统中编程如下:A=l;A=2;PRlNT(A); 在DSM系统中,假设X是存在B机器上的变量。A机器上的进程在t1时刻读取X,即发送信包到B以读取X.稍后,在t2时刻,B机器上的进程写x.若遵守严格一致性,不管机器在哪里,相距多近,A都应该读出原来的值。然而,若t2-t1=1ns,而机器距离3米,从A到B传送读操作并使之先于写操作,信号则必须以十倍光速的速度传递,而这与爱因斯坦相对论矛盾。 带来了存储器和软件的协约问题。若协约或明显或暗示地要求严格一致性,存储器则最好传送它。为使举例精确,我们需要一些特定符号。先规定一些符号:p1,p2,…代表不同的进程,在图中以不同的高度表示,每一进程完成的操作水平的显示时间轴向右增加,直线分割不同进程。符号 W(x)a和R(y)b分别表示在x处写a和从y处读出值赋给b. 本章所有图表中变量初值均为0。如图6-l0(a),P1在x处写1之后,p2读x,返回1。对于严格一致性存储器,操作是正确的。 相反的,如图6-10(b),P2在写之后读(或许是1纳秒之后,但仍在写之后),返回值为0。之后又执行一次读操作,返回值为 1。对于严格一致性的存储器,这个操作是不正确的。 总之,对于严格一致性的存储器,写操作在任一时刻对所有进程都是可见的,同时维护一个绝对全局时间。一旦存储器中的值改变,不管读写之间的事件间隔多小,不管哪个进程执行读操作,也不管进程在何处,以后读出的都是新更改的值。同样,不管后面的写操作有多迅速,执行读操作仍应读出原来的值。 顺序一致性(SequentialConsistency) 尽管严格一致性是理想的编程模式,但在分布系统申,这几乎不可能实现。经验表明,编程人员通常对弱模式掌握得较好。比如,所有操作系统课本中都谈到临界区和同步互斥的问题。人们认为编写这种正确的并行程序 (如生产者一消费者问题)不应考虑进程间的相对速度以及语旬的执行在时间上如何交错。如果一个进程的两个事件发生如此之快,以致其他进程不能在此之间执行任何操作,那可能会带来麻烦。相反,读者的编程方式是:语句执行顺序(实际上是存储器访问)并不重要。如果事件顺序是必要的,必须要用到信号量或其他同步操作。接受这种意见意味着采用弱模式。经过儿次实践,大多数并行程序编写人员都能适应这种模式。 顺序一致是比严格一致稍弱的存储器模式,首先定义了顺序一致存储器应符合的条件:如果所有进程以一定的顺序执行操作,每一进程的操作都以程序规定的顺序出现,则任何操作的结果都是一样的。 这个定义说明:对于在不同机器上并行运行的进程,任何有效的交错都是可以接受的行为,但所有进程必须遵守同一访问存储器顺序。在一块存储器中,若一个进程 (或处理机)看到一种交错另一进程看到另一个交错,这就不是顺序一致存储器。注意,这与时间无关,没有最近存入的概念。在这里,进程可以看到所有进程写,但只能看到本进程读。 从图6-11可以看出这里不考虑时间。图6-11(a)表示的存储器行为是顺序一致的,尽管P2执行的第一次读操作返回初值0而不是新值l。图6-11 运行同一个程序得到的两个可能的结果。 顺序一致存储器不保证读返回的值是lns、lms甚至1分钟以前另一进程写入的。它只保证所有进程以相同的顺序看见存储器访问。如果根据图6-11(a)编写的程序在一次运行后,或许会得到图6-11(b)的结果。结果是不确定的。如果缺少明确的同步操作,在此运行程序或许不能得到相同的结果。 三个并行运行的进程的代码。

文档评论(0)

1亿VIP精品文档

相关文档