在早期的分布式系统中,人们认为程序运行在不同的地址空间
第十一章 存储器一致性模型一、关于D__系统及存储器一致性模型在早期的分布式系统中,人们认为程序运行在不同的地址空间,没有物理上的共享存储器(例如多计算机)。在这种思维模式下,通信自然被看作不相关地址
第十一章存储器一致性模型 一、 D__ 关于系统及存储器一致性模型 在早期的分布式系统中,人们认为程序运行在不同的地址空间,没有物理上的共享存储 器(例如多计算机)。在这种思维模式下,通信自然被看作不相关地址空间的消息传递。 1986Li 年,提出了让一组由局域网互连的工作站共享一个分页的虚拟地址空间。在最简单 的变形中,没一也刚好在一台机器上。对本地页的访问以及存储器速度由硬件实现。试图访 问其他机器上的页,将导致缺页错误,它激活操作系统的陷阱程序。操作系统向远程机器发 送消息,远程机器查找所需页面,将它发送给提出请求的处理机。失败的操作将重新开始并 D__ 得以完成。这就是现在所说的分布式共享存储器即。 D__ 在系统中,每个只读页可以有多个拷贝,而每个可写页只能有一个拷贝。在最简单 的实现方案中,机器远程访问一可写页会激活陷阱,然后获取该页。由于可写页经常共享, 因此只允许有一个拷贝可能会带来严重的性能瓶颈。 只要能更新所有拷贝,允许多重拷贝就可以简化性能问题。但这又引起了新的问题:及 如何保证所有拷贝的一致性。当拷贝分布于不同机器上,而机器间通信只能通过慢速的(和 D__ 存储器速度相比)网络发送信包来完成时,维护绝对的一致性就显得尤其困难。在一些 系统中,解决办法是为了高性能而降低一致性的要求。一致性究竟意味着什么?多大程度上 D__ 的不一致时程序可以接受的?这是研究者面临的主要问题。 一致性模型本质上是软件与存储器间的协约问题。它指的是,如果软件遵守约定的规则, 存储器就能工作正常。如果软件违反了这些规定,存储器就不再保证操作的正确性。研究者 已经设立了很大范围的一系列约定,其中有些对软件只有少量限制,而有些则使普通编程几 乎成为不可能。当然,限制少的模型没有限制多的模型执行效果好。为解决这个问题,提出 了一致性存储模型。 二、存储器一致性模型的分类 大致来说,按照对一致性的要求由强到弱的顺序,可区分为以下几类。 1. 严格一致性模型(Strict Consistency) 最严格的一致性模型称为严格一致性,它由下述条件定义:从存储器地址X处读出的值 为最近写入X的值。这个定义自然而明白,由于它假定了绝对全局时间的存在, “最近” 访问的意义是明确的。传统意义上,单一处理机遵守严格一致性,但处理机的编程者正希望 这样。 D__XBAT1 在系统中,问题更为复杂,假设是存在机器上的变量。机器上的进程在 XBXT2BX 时刻读取,即发送信包到以读取。稍后,在时刻,机器上的进程写。若遵守 T1T2A 严格一致性,不管机器在哪里,也不管和时刻相距多近,都应该读出原来的值, T2—T1= 1ns3AB__ 然而,若,而机器距离米,从到传送读操作并使之先于写操作,则 必须以十倍光速的速度传递,而这与爱因斯坦相对论矛盾。编程人员有理由在违反了物理原 则的情况下要求严格一致性么? 这就给我们带来了存储器和软件协约问题。若协约或明显或暗示地要求严格一致性,存 储器则最好传送它。另一方面,确实希望严格一致性的编程人员,当他不在现场时他的程序 A1 出了错,他就会面临危险。即使在小型多处理机上,某一处理机在处写值,纳秒后另一 Acache 处理机读,也很可能在本地中读出原来的值。这一失败,我们应该牢记! 为深入严格一致性,我们将给出很多例子。为使举例精确,我们需要一些特定的符号。

