




已阅读5页,还剩55页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
消息传递与过程调用的类似性,远程过程调用,send / receive / reply这种通信形式与 大多数传统程序设计语言中的过程 调用非常类似,见图,其中,“调用 者 / 源”先挂起,然后把“参数 / 消息” 传递给“被调用者 / 宿”,让它们去执 行相应的任务;当任务执行完后返 回时,它(们)再把作为结果的“参 数 / 消息”回送给“调用者 / 源”,后 者再继续执行下去。,远程过程调用,远程过程调用(Remote Procedure Call 简称RPC)是一个会晤层协议.虽然这种描述不完全对,因为,允许存在与利用RPC实现的应用层协议某些混合. RPC原理原先由Xerox的研究人员所开发.,远程过程调用,为了实现NFS,Sun公司的工程师开发了他们自己的RPC技术,通常称为SunRPC或 ONC/RPC. ONC/RPC不仅用于NFS的实现,也用于许多其它网络应用. 存在和ONC/RPC不同的其它RPC技术,例如DEC RPC.虽然它们都遵从同样的概念途径,但是它们有不同的内部结构,因此,无互操作性.,RPC和本地过程调用的比较,远程过程调用,过程调用把“数据”和“控制”这两 者从调用者传递给被调用者。 过程是易于理解的,而且已经广 泛地用作传统程序设计语言的基 本组成成份。基于此原因,人们 自然想起应把这个概念引入分布 式操作系统。,远程过程调用,远程过程调用(Remote Procedure Call)就是把过程调用的概念加以 扩允后引入分析式环境中的一种形 式。远程过程调用的形式和行为与 传统的过程调用的形式和行为类似, 主要差别在于被调用的过程实际运 行在一个与调用者所在场点不同的 场点上,见图。因此,需要设计相 应的软件来实现两者之间的连接和 信息沟通。,远程过程调用示意图,RPC的通信模型图,RPC机制的结构及实现,RPC机制的结构由下列成份组成: stub:client和server 各一个; 约束(binding):使client能够定位到相应的server; 控制部分:为追踪RPC的调用状态所设; 传送部分:确定如何将信息从一个场点传送到另一个场点。,实现RPC的一般过程图,实现RPC的一般过程,实现RPC的一般过程实现RPC的一 般过程可概括如图所示: 其中,客户的stub与一个客户连接, 它对于该客户就像一个“服务器”。 在调用时,它截取客户的远程过程 调用命令后,利用通信网络向服务 器发送“请求服务”的信息。在返回 时,它获取返回消息,并带返回结 果返回到客户,然后客户继续执行。,实现RPC的一般过程,Servers stub与一个server连接,它 对于该server就像一个“client”。在 调用时,它收到远程调用请求后, 产生一个本地调用,去执行被请求 的远程过程。在返回时,它截取远 程过程的返回结果,并形成返回消 息发送出去。,实现RPC的一般过程,总之,stub包含了一组RPC机制的 操作原话,这些原语构成了RPC调 用的实现细节,它可独立于client和 server编程,在编译时再连接起来。,实现RPC的一般过程,RPC的实现要考虑两个方面的问题: 第一,当进行远程过程调用时,调 用场点必须能定位出被调用的过程 实际上运行在哪个场点上; 第二,相关的两个场点必须能协同合 作交换信息。所有这些对用户都是透 明的,这些的工作是依次进行的。 下面介绍一种实现RPC的方法其实 现思想已概括在图中。,RPC的实现概况图,RPC的实现概况,如上所述,每个远程过程由若干成 分组成:调用者(caller)或用户(user), 调用代码段,以及被调用者(callee)或 服务器,被调用代码段。这些都可用 常规的程序设计语言编写,不需要利 用特别的设施,就象它们在同一场点 上执行一样。另一些成分是与调用者 相关的stub,与被调用者相关的stub 以及RPC runtime子程序,后者可在 系统中所有场点上运行。,RPC的实现概况,stub程序的功能是把这种过程调用 中所带的参数组装和拆卸成消息形 式,并进行相应的类型检查,然后 把这些消息传递给RPC runtime子 程序,后者再把它们发送到系统中 的其它场点。 事实上,程序设计者定义了过程并 写好了过程体,而系统生成了对应 的stub。,主要工作环节,实现一个远程过程调用的主要工作 环节如下: 调用者用通常方式调用对应stub 中的一个过程; 这个stub过程把有关的参数组装 成一个消息包或一组消息包,以形 成一条消息。运行此过程的那个场 点的“地址”和那个场点上指称此过 程的“标识符”都应包含在这条消息 中;,主要工作环节,将这条消息发送给对应的RPC runtme子程序,该子程序再把它 发送给指定的场点。 在接收此消息时,远程runtime 子程序引用与被调用者对应的stub 中的一个子程序,并让它来处理这 条消息;,主要工作环节,被调用者对应的stub中的这个子 程序拆卸有关的参数并用通常的过 程调用方式调用所需的过程。 返回调用结果,整个远程过程调 用以与调用者对应的stub程序执行 “return”语句返回到用户而终止。,远程过程调用,注意,调用者产生一个过程调用,而 被调用者由一个过程调用所引用。 相应的stub和runtime协同合作给了 我们这种印象,即好像调用者直接 引用了被凋用者,,远程过程调用,不难察觉,在上面的述中,我们回 避了一个重要的问题,即与用户对 应的stub如何知道实际运行远程过 程的场点之地址呢?例如,给定远 程过程调用procX(pal,pa2),与调用 者对应的stub如何确定procX将运行 在哪个场点上呢?已经研究出了一 些解决这一向题的方法。,远程过程调用,当系统生成与调用者对应的stub 时,可把该远程场地的地址也一同 并入其中,不过这种做法不太灵活。 在进行调用之前,与调用者对应 的stub向系统中的其它场点进行广 播,请求有关的场点通报其地址, 这必然引起一系列的消息传递。特 别,当这种广播是在若干网络之间 进行时,其传递速度是很慢的。,远程过程调用,由系统管理一个表,其表项的内容 为: 场点地址; 该场点上将运行的远程过程的名字。 “愿意”产生一个可供其它场点引用的 过程的那些场点就造一个表项到这个 表中,该表项给出了这些场点的地址 和此远程过程的名字。希望引用远程 过程的用户可通过查询此表获取有关 信息。,RPC执行时各部分之间的关系图,RPC执行时各部分之间的关系,RPC执行时,各部分的关系如图所 示。其中, 传输部分是RPC的最低层, 其主要功能为: 提供对网络传输层协议的选择。 建立 / 释放逻辑信道,发送 / 接收消息等; 管理RPC中的消息缓冲区。,控制部分的主要功能,控制部分的主要功能是: 确定RPC中消息的方向(发送或 接收); 当client的stub开始一次RPC调用或 者server向server的stub返回调用结 果时,该部分负责控制传输部分进 行发送。,控制部分的主要功能,场点间会合(rendezvous)与进程 同步; 场点间会合是指为使两个场点间进 程同步,它们必须同意“会合”,即 早到达的进程要等待晚到达的进程。 会话进程通过场点间会合建立一致 的起点,并以该起点作为进程同步 点进行对话。,控制部分的主要功能,若干状态信息的处理。 由上可知,由于client的stub的作用, 使得client可用常规过程调用方式去 调用远程过程;由于server的stub的 作用,使得server程序可以独立于 调用者来编程,因而比较灵活。,远程过程调用,RPC的语义,本地调用和远程过程调用之间存在 许多不同之处。如果远程调用是在 两种异型机器间进行,这就存在数 据表示问题,例如,这两类机器的 字长可能不同。,RPC的语义,解决这一向题的方法之一是它在传 递数据之前,让RPC机制将有关的 数据转换成一种统一的格式,接收 场点在接收数据时,再把它们转换 成本地所允许的数据格式。,RPC的语义,第二个问题是如何解释指针,更确 切地说,一个指针到底访问的是什 么,在不具有共享地址空间的情况 下,RPC不可能允许在网络范围内 传递指针。因此,在RPC中是不可 能用“引用(reference)方式”传递 参数的。,RPC的语义,更严重的问题是调用者和被调用者 都可能在调用期间发生故障,而且 经常是被调用者故障,留下调用者 挂起。如果发生这种情况,调用者 可能不得不夭折,这在本地调用中 是决不会出现的。 一个远程过程调用故障之后,调用 者很难得知在故障发生前,该过程 调用已经进行到了哪一步。这通常 有三种可能:,RPC的语义,在被调用者接收到调用它的命令 之前,它发生了故障。 在执行其过程体时,被调用者发 生了故障; 被调用者正确地完成了其过程体 的执行,但在把结果返回给调用者 之前发生了故障。 此外,还有调用者在发出调用命令 之后并在获得调用结果之前发生了 故障。,RPC语义的规则,由于调用者无法知道到底出现哪种 情况,因此,系统必须提供一些基 本的保护机制来确保RPC正确效果。 不过,这个问题由于通信方面也可 能出错以及系统试图进行错误矫正 而混杂在一起,使得一个远程过程 在成功地完成其执行之前,实际上 可能引用了若干次。不同的RPC实 现方案定义的这种效果或RPC语义 是有差别的。,RPC语义的规则,几种常用的定义RPC语义的规则是: 1ast-of-many 对执行一个远程过程调用而言,被调用的过程可能执行若干次,但规定其最后一次执行的结果作为返回结果;,RPC语义的规则,at-most-once 若调用者收到了回 复消息,则被调用的过程正确地完 成了它的一次(仅仅一次)执行。 如果调用者没收到回复消息,或者, 如果调用者在获得回复消息之前发 生故障,那么,这时的调用效果就 看作是根本就没有执行相应的过程。,RPC语义的规则,at-1east-once 在场点正常情况下, 则远程过程至少执行一次,且回复 消息可能返回一次或多次。在场点 故障时,就不能保证远程过程是否 已被执行或曾返回任何回复消息。,RPC语义的规则,exactly- once 若server正常,则远 程过程将恰好执行一次,并返回一 个调用结果。 同send/receive 通信原语有许多变种 一样,RPC也有一些不同的形式。 例如可以允许异步远程过程调用, 因此,调用者和被调用者可以并行 执行,调用者负责在稍后某一时刻 执行一个所谓的会合(rendezvous) 来获取调用结果。,ONC/RPC协议头,ONC/RPC协议头,程序号:实现该程序的服务器.请求新的程序号. 版本号:程序的版本. 过程号:辨识服务器上的目的过程. 发送方向:RPC请求为0,响应为1. 事务处理标识符:辨识每个个别 RPC请求.,外部数据表示(XDR),外部数据表示(External Data Representation简称XDR)是表示 层的一个协议,在RFC 1014 (Sun Microsystems, 1987)予以规定。 XDR涉及数据编码格式的定义。 XDR没有象其它协议那样的协议 头或其它协议元素。,背景,对于表示层的协议有良种操作模式: 明显格式(explicit format):个别元素的描述和数据一道传送,因此,能够使接收者恢复数据记录的结构(如ASN.1 Basic Encoding Rules(BER)。 隐含格式(implicit format):在数据传送之前,在两个通信方之间就元素的结构和 表示包含一个协议。,隐含格式,在隐含格式中存在两种不同的数据 编码格式: 经典格式(canonocal format):发送者总归把数据转换为一个公共统一的格式,由接收者重新转换回。 服务器使之正确格式(server makes it right format):发送者将数据保留为自己本地的表示格式,并且加一个标识符到消息,给接收者以发送者的格式信号。,外部数据表示(XDR),外部数据表示(XDR)使用隐含的经典格式。,数据编码(Data encoding),二进制整数表示有两种形式: 低位字节在最低内存地址(little-endian) 低位字节在最高内存地址(big-endian) 理论上,在一个字节中位的次序有同样的差别,但是,在实际上所有的处理机都采用big-endian格式安排在一个字节中位的次序。,数格式,正文的编码,数值的编码通常由处理机硬件决定, 而软件在正文和复杂的数据对象的 编码中是至关重要的。有了一个从 代码到字符的映照,正文简单地是 一个无意义的字节序列。标准化的 联结数值和字母的映照表包括ASCII 和EBCDIC代码。不幸地,这些具 有功能上不同的结构。例如,字母 A在EBCDIC中表示为C1(16),在 ASCII中表示为41(16)。,复杂数据对象的编码,联合(union)和结构(structure)是由上述基本数据类型构造的复杂数据对象;它们由程序员或编译程序确定。程序的说明原则上是可互交换的,这些对象在二进制交换中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三个女儿离婚协议书模板
- 合同与技术开发合同范本
- 企业产权变更协议书模板
- 人员聘用合同协议书模板
- 劳动合同法孕妇保护协议
- 假期参加的劳动合同范本
- 医院接受设备捐赠协议书
- 医院入股协议书范本合同
- 住家保姆带小孩合同范本
- 同事下班蹭车免责协议书
- 2025年浙江省中考英语真题(解析版)
- Q-GDW10250-2025 输变电工程建设安全文明施工规程
- JJG 8-1991水准标尺
- GB/T 4857.17-2017包装运输包装件基本试验第17部分:编制性能试验大纲的通用规则
- 全套教学课件《管理学基础》
- 二级医院评审自评自查表
- 工程罚款通知单模版
- 多联体筒仓滑模施工技术分享
- T∕CGMA 033002-2020 压缩空气站节能设计指南
- 材料物理之材料的结合方式PPT课件
- 《版式设计》教案
评论
0/150
提交评论