消息传递
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
国家信息中心 夏道藏 2013-524
28
消息传递与过程调用的类似性
国家信息中心 夏道藏 2013-524
远程过程调用
29
send/receive/reply这种通信形式与 大多数传统程序设计语言中的过程 调用非常类似,见图,其中,“调 用者/源”先挂起,然后把“参数/ 消息”传递给“被调用者/宿”,让 它们去执行相应的任务;当任务执 行完后返回时,它(们)再把作为 结果的“参数/消息”回送给“调用 者/源”,后者再继续执行下去。
同步型消息传递
6
⑵同步型:它与异步型消息传递正 好相反,总是要求发送方等待接收 方的回复,然后,发送方与接入方 同步继续向下执行,其主要特征是: ①消息的发送方和接收方在完成信 息交换后彼此知道对方的状态; ②同半机制和通信机制合二为一, 一般无需大的缓冲区; ③实现容易,但效率较低。
国家信息中心 夏道藏 2013-524
同步消息传递方式的应用
18
国家信息中心 夏道藏 2013-524
19
同步
国家信息中心 夏道藏 2013-524
同步消息传递方式的应用
20
还有不少其它形式的send/receive原 语。例如,“选择性接收”(selective receive)和“条件发送”(conditional send)。一个selective receive操作允 许其用户选择一个进程或一组进程 去接收发送来的消息。 当执行conditional send操作时,如 果相关的接收者不是处于阻塞状态 正等待接收消息,那么它将立即完 成而不发送消息。
国家信息中心 夏道藏 2013-524
同步消息传递方式的应用
21
实际上,大多数异步send操作后紧 随着一个receive操作。基于这个原 因,许多分布式操作系统只提供同 步消息传递原语。 很多分布式操作系统采用消息传递 机制来支持通信。
国家信息中心 夏道藏 2013-524
同步消息传递方式的应用
国家信息中心 夏道藏 2013-524
同步消息传递方式的应用
27
⑺GetResult(…);查询由Wait返回的 结果。 在给定link的每个方向上,Charlotte 只允许有一条未处理完的消息。消 息缓冲区是由用户进程在它们自己 的地址空间中管理的.当进程终止 时,内核自动撤消与这些进程相连 的所有link。当发现某个场点故障 时,内核也撤消与在该场点上运行 进程相连的所有link。
7
同步消息传递和异步消息传递
国家信息中心 夏道藏 2013-524
消息传递
8
消息本身要占用存贮空间,并常常 存放在系统的缓冲区中。当使们异 步消息传递机制时,系统中的每个 进程在某一时刻可能有多个尚未处 理的消息。由于消息缓冲区是一个 有穷的资源,因此,当使用异步消 息传递方式传递消息时,可能会发 生消息缓冲区溢出的情况。因此, 异步消息传递需要特定的消息缓冲 区管理算法来处理这方面的问题。
国家信息中心 夏道藏 2013-524
远程过程调用
30
过程调用把“数据”和“控制”这 两者从调用者传递给被调用者。过 程是易于理解的,而且已经广泛地 用作传统程序设计语言的基本组成 成份。基于此原因,人们自然想起 应把这个概念引入分布式操作系统。 远程过程调用(Remote Procedure Call)就是把过程调用的概念加以 扩允后引入分析式环境中的一种形
国家信息中心 夏道藏 2013-524
同步消息传递方式的应用
25
⑵Destroy(myend:link);撤消与给 定端点相关的link。 ⑶Send(L:link;buffer: address; length:integer);给定link上发送一 个send请求。 ⑷Receive(L:link;buffer:address; length:integer);在给走link上发送 一个receive请求。
国家信息中心 夏道藏 2013-524
异步型消息传递
5
②由于通信机制与同步机制几乎被 截然分开,因此,系统应具有“无 限”的缓冲空间来容纳任意超前发 出而尚未处理的消息,以此来解决 消息发送速度和消息处理速度之间 的差异; ③能比较充分地利用系统的潜在能 力,但实现时须解决许多实际的控 制问题。
国家信息中心 夏道藏 2013-524
国家信息中心 夏道藏 2013-524
同步消息传递方式的应用
16
仅当没有“请求服务”的消息到达 时,server就阻塞自己。clients在 等待server的回复消息时就阻塞它 们自己,从而实现了clients与server 的同步。
国家信息中心 夏道藏 2013-524
在设计server进程时,通常要求: ⑴server必须能调度和回复多个并 发的请求消息; ⑵server处理请求消息和发送回复 消息的次序与接收该请求消息的次 序无关; ⑶在server给client发送回复消息时, 决不应阻塞; ⑷某个相关的client故障,不应影响 server的操作。
time-server: client: while true do send(timeserver, receive(request); gettime, time); readclock(time); reply(time); end;
国家信息中心 夏道藏 2013-524
使用消息传递方式的 client /server模型
国家信息中心 夏道藏 2013-524
远程过程调用
31
远程过程调用的形式和行为与传统 的过程调用的形式和行为类似,主 要差别在于被调用的过程实际运行 在一个与调用者所在场点不同的场 点上,见图。因此,需要设计相应 的软件来实现两者之间的连接和信 息沟通。
国家信息中心 夏道藏 2013-524
32
国家信息中心 夏道藏 2013-524
同步消息传递方式的应用
24
消息可以在一个link上的任何端点 发送,也可以在其两个方向上同时 发送。每个进程对其相关的link的 那个端点拥有一个权限,这个权限 就是授于在该link上“发送/授收” 消息的权力。该分布式操作系统的 内核确保在给定时间对每一个link 的端点只有一个权限。
14
国家信息中心 夏道藏 2013-524
同步消息传递方式的应用
15
一般,server可以设计成依次重复 执行下述步骤的程序段: ⑴等待接收来自clients发送的“请 求服务”的消息; ⑵接收clients发来的“请求服务” 的消息; ⑶处理clients发来的“请求服务” 的消息; ⑷向clients发送“服务已完成”的 回复消息。
同步消息传递方式的应用
17
国家信息中心 夏道藏 2013-524
同步原语有一种与信息交换不同的 特性。当一个进程引用了一个挂起 的原语时,它就阻塞自己直至此原 语执行完毕。同步原语的这种”阻 塞”特性,类似于单处理机中所使 用的信号量,可用于同步目的。 图(a)展示了两个进程使用信号量进 行同步例子,其中,当P1在信号量 sem上等待时,它就彼阻塞直至P2 唤醒它。一个进程等待另一进程的 类似效果也可利用同步send/receive 原语实现,见图 (b)。
国家信息中心 夏道藏 2013-524
35
实现RPC的一般过程
国家信息中心 夏道藏 2013-524
远程过程调用
36
其中,客户stub与一个客户进程连 接,它对于该客户进程就像一个 “server”。在调用时,它截取客 户进程的远程过程调用命令后,利 用通信网络向服务器发送“请求服 务”的信息。在返回时,它获取返 回消息,并带返回结果返回到客户 进程,然后客户进程继续执行。
国家信息中心 夏道藏 2013-524
消息传递
3
因此,分布式操作系统通常提供 send、receive和reply等基本通信 原语来实现进程间的通信和同步。 进一步,消息传递原语分为两类: 同步型和异步型。
国家信息中心 夏道藏 2013-524
异步型消息传递
4
⑴异步型:在这类通信机制中,传 递消息的进程不等待接收者的回复, 又称“不等”传递(send no Wait), 即允许发送方可任意超前于接收方, 因而具有下面的特征: ①接收方收到的消息与发送方目前 的状态是无关的,换言之,接收消 息中反映的发送状态一般不是发送 方的当前状态;
国家信息中心 夏道藏 2013-524
同步消息传递方式的应用
11
client们在等待所请求的服跟务完成 时就阻塞自己。仅当没有消息给 server,即没有供它做的事情时, 该server就阻寒,见图,其中c1ient 们向time-server发送一请求给出时 间的消息: send(time-server,gettime.time)。
国家信息中心 夏道藏 2013-524
同步消息传递方式的应用
23
它提供了如下七条通信原语: ⑴MakeLink(var end1, end2 : link); 创建一个链路(link)并返回它的 两个端点信息。 在Charlotte中,一个link实质上是 一个软件抽象,它代表了一对彼此 通信的进程间的一条信道 (communication channel)。
国家信息中心 夏道藏 2013-524
消息传递
1
分布式操作系统中的通信以信息传 递为基础,其基本通信机制可分为
消息传递
远程过程调用
国家信息中心 夏道藏 2013-524
消息传递
2
在分布式系统中,所有进程相互通 信是通过彼此交换消息进行的。一 个消息是从一进程发往另一些进程 的信息单位。一般说来,可用系统 提供的任何设施来发送消息。消息 通常是用消息包或帧的形式发送的, 源进程通过执行send操作发送消息, 宿进程则通过执行receive操作来获 取消息;如果必要,在其获取消息 后再通过执行reply操作给发送者一
国家信息中心 夏道藏 2013-524
同步消息传递方式的应用
12
time-server循环等待请求读时钟的 消息,然后执行“读时钟”工作, 并在处理下一请求消息之前发出回 复,即time-server和client可分别编 写成如下的程序段:
国家信息中心 夏道藏 2013-524
13
同步消息传递方式的应用
国家信息中心 夏道藏 2013-524
消息传递
9
但在采用同步消息传递方式时,系 统中的每个进程决不可能存在一个 以上尚未处理的消息,因此,其消 息缓冲区的管理算法比较简单。
国家信息中心 夏道藏 2013-524
同步消息传递方式的应用
10
同步消息传递方式特别适合于client /server模型。一个client通过向一个 server发送一个消息来请求该server 为它服务,然后这个client就桂起, 直至对应的server发来回复消息 (即告之所请求的服务已经完成)。 server可以写成一个无穷循环程序, 它等待接收请求,然后处理相应的 请求,最后发回复消息。
远程过程调用示意图
国家信息中心 夏道藏 2013-524
33
RPC的通信模型
国家信息中心 夏道藏 2013-524
远程过程调用的结构及实现
34
RPC机制的结构由下列成份组成: ⑴stub:client和server 各一个; ⑵约束(binding):使client能够 定位到相应的server; ⑶控制部分:为追踪RPC的调用状 态所设; ⑷传送部分:确定如何将信息从一 个场点传送到另一个场点。 实现RPC的一般过程可概括如下图
来自百度文库22
例如,由美国Wisconsin大学计算 机科学系花了大约5年时间并最终 于1987年研制出来的Charlotte分 布式操作系统,就是采用消息传 递机制来支持通信的。它运行在 Crystal多机系统上。该多机系统 由20台VAX-11/750计算机组成。 这些计算机由80Mbit/Second的 Proteon令牌环网(Token Ring)相连。
国家信息中心 夏道藏 2013-524
同步消息传递方式的应用
26
⑸Cancel(L : link; d : direction); 试图取消一个业已传送的send或 receive请求,若该请求已经完成, 则这种试图失败。 ⑹Wait(L : link; d : direction; var e:description);等待一个消息的 完成。direction可以是send/receive, description指明所等待的请求是成 功/失败,以及它的link、传送方向、 传送的字节数等等。