分布式共享存储器.docVIP

  • 7
  • 0
  • 约2.92万字
  • 约 26页
  • 2020-02-01 发布于辽宁
  • 举报
PAGE 174 PAGE 26 FILENAME ch61 共 NUMPAGES 26 页 分布式共享存储器 在第一章中,我们看到存在着多处理机和多计算机这样两种多处理机系统。在多处理机系统中,两个或更多的CPU共享一个存储器。任何处理机上的任何进程只需将数据移入移出就可读写共享存储器中的数据。而在多计算机系统中,每个CPU有各自的存储器,并不共享。 以农业为例,一个多处理机可以看作这样一个系统:一群猪(进程)用一个食槽(共享存储器)进食。而多计算机则是每只猪拥有自己的食槽。以教育为例,多处理机就是教室前面的一块黑板,所有学生都可以看到,而多计算机则是每个学生看自己的笔记本。尽管这种区别看起来微不足道,其影响却是深远的。 其结果涉及到软件和硬件两个方面。首先看看对硬件的影响。设计一种使多个处理机同时使用同一存储器的机器是非常困难的。如1.3.1节所述, 由于总线会成为一种瓶颈, 基于总线的多处理机总数就最多只能有几个。1.3.2节介绍的交换式多处理机可应用于大系统,但相比之下过于昂贵、缓慢、复杂以及难维护。 相反,大的多计算机系统更易于建立。单主板计算机(包含一个CPU,一个存储器,一个网络接口)可以相互连接在一起, 而不受数量的限制。许多生产商都提供包含数以千计处理机的多计算机系统。从硬件设计者的角度看,多计算机系统比多处理机系统更优越。 现在看看它对软件的影响。 用于多处理机编程的技术很多。为实现通信,一个进程把数据写到存储器,其它进程将之读出。为保持同步,可以使用临界区(critical region),信号量或管程(monitor) 提供必要的互斥。很多文章都讨论了在共享存储器的计算机上实现通信与同步的问题。在过去的20年中,每一本操作系统的教科书都有几个章节讨论这个问题。简而言之,大量的理论和实践知识可用于多处理机编程。 对多计算机系统,情况正好相反。通信一般使用消息传递,这使输入/输出更为抽象。消息传递带来了许多复杂的问题,包括:流控制,信包丢失,缓冲区设置和拥塞。尽管已提出了不同的解决方案,但消息传递的编程仍很复杂。 为回避消息传递中的一些困难,Birrell 和Nelson(1984)提议采用远程过程调用。在他们的方案中,实际的通信隐藏在过程库中。为了使用远程服务,进程调用相应的库过程,它将操作码和参数组装成一条消息,通过网络送出,等待应答。但是像图像和其它包含指针的复杂数据结构不易发送。且它不能用于使用全局变量的程序 。另外,用这种方法传送大数组也相当昂贵,这是因为它们必须通过值而不是引用来传送。 总之,从软件设计者的角度来看,多处理机系统要比多计算机系统优越。这两种方法各有优缺点:多计算机系统易于建立但难于编程;多处理机系统正相反,易于编程但难于建立。我们需要既易于建立又易于编程的系统。本章便试图建立这样的系统。 6.1 简介 在早期的分布式系统中,人们认为程序运行在不同的地址空间,没有物理上的共享存储器(例如多计算机)。在这种思维模式下,通信自然被看作不相关地址空间的消息传递。1986年,Li提出了不同方案,这就是现在所说的分布式共享存储器(DSM)(Li,1986;Li及Hudak,1989)。简言之,Li 和Hudak提出让一组由局域网互连的工作站共享一个分页的虚拟地址空间。在最简单的变形中,每一页刚好在一台机器上。对本地页的访问以存储器速度由硬件实现。试图访问其它机器上的页将导致缺页错误,它激活操作系统的陷阱程序。操作系统向远程机器发送消息,远程机器查找所需页面,将它发送给提出请求的处理机。失败的操作将重新开始并得以完成。 这种设计与传统的虚拟存储器系统有类似之处:当一进程访问一未驻留存储器的页时,激活陷阱,操作系统获取相应页并将其调入。不同之处在于:操作系统不是从磁盘中而是通过网络从另一个处理机中获取页。对用户进程来说,系统更象传统的多处理机,多个进程随意地读写共享存储器。所有的通信和同步都通过存储器来完成,对用户进程不可见。实际上,Li和Hudak设计了一种即易于编程又易于建立的系统。 然而,十全十美是不可能的。尽管这个系统既易于编程又易于建立,但是许多应用程序在这个系统上运行的情况并不乐观。页在网上频繁地调进调出,这种情况与单处理机虚拟存储器系统的抖动类似。近几年来,如何使这种分布式共享存储器系统更为有效已成为一个有待深入研究的领域,并研究开发了大量的新技术。所有这些都是为了缓解网络冲突、减少存储器请求与应答之间的时间。 另一种方法是不共享整个地址空间,而只共享其中所选择的一部分,即那些由多个进程引用的变量和数据结构。在这种模式下,每台机器并不直接访问一般存储器而是访问共享的变量集,这是一种更高层次上的抽象。这种策略不仅极大地减小了必须共享的数据量,而且在大多数情况下,共享数

文档评论(0)

1亿VIP精品文档

相关文档