分布式系统的通信-Read.DOCVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分布式系统的通信-Read

第二章 分布式系统的通信 分布式系统和单处理机系统一个最重要的区别是进程间的通信。在单处理机系统中进程间的通信无疑是利用共享存储器。一个典型的例子是生产者-消费者问题,一个进程向共享存储器写入,而另一个进程从该共享存储器中读出,甚至最基本的同步形式,如信号量(信号量自身可变)都要求必须有一个字的内存是共享的。在分布式系统中没有共享存储器,不管怎样,进程间相互通信的研究必须完全重新开始。本章,我们将讨论许多关于分布式操作系统中进程间通信的问题和例子。 我们将从进程间通信所必须遵循的规则开始讨论,这些规则称作协议。对于广域的分布式系统这些协议通常有许多层,每一层都有自己的目标和规则。将先讨论两个层次集,OSI和ATM,然后将比较详细地讨论客户-服务器模式。此后,就可以知道消息是如何进行交换以及系统设计者的许多可用的选择。 一个特殊的选择就是远程过程调用,它非常重要,所以自成一段。远程过程调用是消息打包传送的较好方法,和常规的编程相似并且容易使用。然而,我们也应该看到它也有自己的特色和问题。 本章还介绍进程组如何通信,而不是两个进程间如何通信,将详细讨论一个进程组通信的实例——ISIS。 2.1 分层协议 由于缺少共享存储器,在分布式系统中所有通信都是基于消息传递的,当进程A想和进程B通信时,它首先在它的地址空间建立一条消息。然后执行一个系统调用让操作系统取出消息并且通过网络传送给B。尽管这种基本思想听上去很简单,但是为了避免混乱,A和B必须对要传送的所有位的意义达成一个协议。如果A发送一篇用法文写的才华横溢的新文章,用IBM的EBCDIC字符码编码,而B用英文写的超级市场的存货清单用ASCⅡ码编码,那么这种通信的结果是不会令人满意的。 通信需要许多不同的协议。用多少电压表示“0”?多少电压表示“1”?接收者如何知道哪一位是消息的最后一位?怎样判定消息是否被损坏或丢失,如果发现了又应该做什么?数字、字符串和其它数据项需要有多长,它们如何表示?一句话,不论是低层的位传输还是高层的信息表示,在每一个层次上都需要协议。 为了使处理通信中存在的层与层之间的问题更容易,国际标准化组织(ISO)开发了一个参考模型,它清楚地确定了不同层所涉及的内容,给出了各层的标准名称,并指出各层应做的工作。这个模型称作开放系统互连参考模型(OSI),通常缩写为ISO OSI,有时也叫OSI模型。在这里不打算给出详细介绍,只简单地介绍一下。 如果需要更详细的信息,请参考看(Tanenbaum,1988)。 开始,OSI模型被设计为用于开放系统的通信。一个开放系统就是指使用标准化规则与其它开放系统通信的系统,而在系统中这些规则管理着发送和接收的消息的格式、内容和意义。这些规则的正式名称是协议。基本上,一个协议就是通信各方就如何进行通信所需要遵守的规则。当一个女士被介绍给一位男士,她可能会伸出她的手,而他是握它还是吻它,要取决于这位女士是在商业会议上的一位美国律师,还是在宫廷舞会上的欧洲皇族。违反协议将使通信变得非常困难,如果这时通信还是可能的话。 从更偏重技术的角度来说,许多公司为IBM PC制造存储器板。当一个CPU想从存储器中读一个字,它将地址和某个控制信号发送到总线上。在一定的时间间隔内,认为存储器板应该能够看到这些信号并将CPU所需要的字放在总线上作为应答。如果存储器板遵守请求总线协议,它就会准确无误地工作,否则它将不能准确地工作。 同样,如果要让网络上的一组计算机进行通信,那么它们就必须遵守网络协议。OSI模型区分了两种类型的协议。所谓面向连接(connection-oriented)的协议,在交换数据之前,发送者和接收者首先必须明确地建立连接,并且协商可能使用的协议。工作完成后必须断开连接。电话就是一种面向连接的通信系统。在所谓非面向连接(connectionless)的协议中则不需要预先做什么,发送者只要将准备好的报文直接发送出去即可,投信到邮箱就是非面向连接协议的例子,对于计算机的使用,面向连接和非面向连接的通信都是很普通的。 在OSI模型中,通信结构分为7层,如图2-1所示。每一层处理有关通信的一个特定方面,使用这种方法,可以将一个问题分解为几个可管理的块,每一块都解决和其它块不同的问题,每一层都提供一个接口(interface)给它的上一层。接口由同时定义了这一层将提供给它的用户的服务的一系列操作组成。 图 2-1. OSI模型中的层、接口和协议 图2-2 出现在网络上的一个典型消息结构 在OSI模型中,当机器1上的进程A想和机器2上的进程B通信时,它建立一条消息,并将消息传送到本机的应用层。这一层可以是个库过程,也可以用其它方法实现(如,在操作系统

文档评论(0)

laolao123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档