远程过程调用_第1页
远程过程调用_第2页
远程过程调用_第3页
远程过程调用_第4页
远程过程调用_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、消息传递与过程调用的类似性1远程过程调用send / receive / reply这种通信形式与大多数传统程序设计语言中的过程调用非常类似,见图,其中,“调用者 / 源”先挂起,然后把“参数 / 消息”传递给“被调用者 / 宿”,让它们去执行相应的任务;当任务执行完后返回时,它(们)再把作为结果的“参数 / 消息”回送给“调用者 / 源”,后者再继续执行下去。2远程过程调用远程过程调用(Remote Procedure Call 简称RPC)是一个会晤层协议.虽然这种描述不完全对,因为,允许存在与利用RPC实现的应用层协议某些混合.RPC原理原先由Xerox的研究人员所开发.3远程过程调用为

2、了实现NFS,Sun公司的工程师开发了他们自己的RPC技术,通常称为SunRPC或 ONC/RPC. ONC/RPC不仅用于NFS的实现,也用于许多其它网络应用.存在和ONC/RPC不同的其它RPC技术,例如DEC RPC.虽然它们都遵从同样的概念途径,但是它们有不同的内部结构,因此,无互操作性.4RPC和本地过程调用的比较5远程过程调用过程调用把“数据”和“控制”这两者从调用者传递给被调用者。过程是易于理解的,而且已经广泛地用作传统程序设计语言的基本组成成份。基于此原因,人们自然想起应把这个概念引入分布式操作系统。6远程过程调用远程过程调用(Remote Procedure Call)就是把

3、过程调用的概念加以扩允后引入分析式环境中的一种形式。远程过程调用的形式和行为与传统的过程调用的形式和行为类似,主要差别在于被调用的过程实际运行在一个与调用者所在场点不同的场点上,见图。因此,需要设计相应的软件来实现两者之间的连接和信息沟通。7远程过程调用示意图8RPC的通信模型图9RPC机制的结构及实现RPC机制的结构由下列成份组成:stub:client和server 各一个;约束(binding):使client能够定位到相应的server;控制部分:为追踪RPC的调用状态所设;传送部分:确定如何将信息从一个场点传送到另一个场点。10实现RPC的一般过程图11实现RPC的一般过程实现RPC

4、的一般过程实现RPC的一般过程可概括如图所示:其中,客户的stub与一个客户连接,它对于该客户就像一个“服务器”。在调用时,它截取客户的远程过程调用命令后,利用通信网络向服务器发送“请求服务”的信息。在返回时,它获取返回消息,并带返回结果返回到客户,然后客户继续执行。12实现RPC的一般过程Servers stub与一个server连接,它对于该server就像一个“client”。在调用时,它收到远程调用请求后,产生一个本地调用,去执行被请求的远程过程。在返回时,它截取远程过程的返回结果,并形成返回消息发送出去。13实现RPC的一般过程总之,stub包含了一组RPC机制的操作原话,这些原语构

5、成了RPC调用的实现细节,它可独立于client和server编程,在编译时再连接起来。14实现RPC的一般过程RPC的实现要考虑两个方面的问题:第一,当进行远程过程调用时,调用场点必须能定位出被调用的过程实际上运行在哪个场点上;第二,相关的两个场点必须能协同合作交换信息。所有这些对用户都是透明的,这些的工作是依次进行的。下面介绍一种实现RPC的方法其实现思想已概括在图中。15RPC的实现概况图16RPC的实现概况如上所述,每个远程过程由若干成分组成:调用者(caller)或用户(user),调用代码段,以及被调用者(callee)或服务器,被调用代码段。这些都可用常规的程序设计语言编写,不需

6、要利用特别的设施,就象它们在同一场点上执行一样。另一些成分是与调用者相关的stub,与被调用者相关的stub以及RPC runtime子程序,后者可在系统中所有场点上运行。17RPC的实现概况stub程序的功能是把这种过程调用中所带的参数组装和拆卸成消息形式,并进行相应的类型检查,然后把这些消息传递给RPC runtime子程序,后者再把它们发送到系统中的其它场点。事实上,程序设计者定义了过程并写好了过程体,而系统生成了对应的stub。18主要工作环节实现一个远程过程调用的主要工作环节如下: 调用者用通常方式调用对应stub中的一个过程;这个stub过程把有关的参数组装成一个消息包或一组消息包

7、,以形成一条消息。运行此过程的那个场点的“地址”和那个场点上指称此过程的“标识符”都应包含在这条消息中;19主要工作环节将这条消息发送给对应的RPC runtme子程序,该子程序再把它发送给指定的场点。在接收此消息时,远程runtime子程序引用与被调用者对应的stub中的一个子程序,并让它来处理这条消息;20主要工作环节被调用者对应的stub中的这个子程序拆卸有关的参数并用通常的过程调用方式调用所需的过程。返回调用结果,整个远程过程调用以与调用者对应的stub程序执行“return”语句返回到用户而终止。21远程过程调用注意,调用者产生一个过程调用,而被调用者由一个过程调用所引用。相应的st

8、ub和runtime协同合作给了我们这种印象,即好像调用者直接引用了被凋用者,22远程过程调用不难察觉,在上面的述中,我们回避了一个重要的问题,即与用户对应的stub如何知道实际运行远程过程的场点之地址呢?例如,给定远程过程调用procX(pal,pa2),与调用者对应的stub如何确定procX将运行在哪个场点上呢?已经研究出了一些解决这一向题的方法。23远程过程调用当系统生成与调用者对应的stub时,可把该远程场地的地址也一同并入其中,不过这种做法不太灵活。在进行调用之前,与调用者对应的stub向系统中的其它场点进行广播,请求有关的场点通报其地址,这必然引起一系列的消息传递。特别,当这种广

9、播是在若干网络之间进行时,其传递速度是很慢的。24远程过程调用由系统管理一个表,其表项的内容为:场点地址;该场点上将运行的远程过程的名字。“愿意”产生一个可供其它场点引用的过程的那些场点就造一个表项到这个表中,该表项给出了这些场点的地址和此远程过程的名字。希望引用远程过程的用户可通过查询此表获取有关信息。25RPC执行时各部分之间的关系图26RPC执行时各部分之间的关系RPC执行时,各部分的关系如图所示。其中,传输部分是RPC的最低层,其主要功能为:提供对网络传输层协议的选择。建立 / 释放逻辑信道,发送 / 接收消息等;管理RPC中的消息缓冲区。27控制部分的主要功能控制部分的主要功能是:确

10、定RPC中消息的方向(发送或接收);当client的stub开始一次RPC调用或者server向server的stub返回调用结果时,该部分负责控制传输部分进行发送。28控制部分的主要功能场点间会合(rendezvous)与进程同步;场点间会合是指为使两个场点间进程同步,它们必须同意“会合”,即早到达的进程要等待晚到达的进程。会话进程通过场点间会合建立一致的起点,并以该起点作为进程同步点进行对话。29控制部分的主要功能若干状态信息的处理。由上可知,由于client的stub的作用,使得client可用常规过程调用方式去调用远程过程;由于server的stub的作用,使得server程序可以独立

11、于调用者来编程,因而比较灵活。30远程过程调用31RPC的语义本地调用和远程过程调用之间存在许多不同之处。如果远程调用是在两种异型机器间进行,这就存在数据表示问题,例如,这两类机器的字长可能不同。32RPC的语义解决这一向题的方法之一是它在传递数据之前,让RPC机制将有关的数据转换成一种统一的格式,接收场点在接收数据时,再把它们转换成本地所允许的数据格式。33RPC的语义第二个问题是如何解释指针,更确切地说,一个指针到底访问的是什么,在不具有共享地址空间的情况下,RPC不可能允许在网络范围内传递指针。因此,在RPC中是不可能用“引用(reference)方式”传递参数的。34RPC的语义更严重

12、的问题是调用者和被调用者都可能在调用期间发生故障,而且经常是被调用者故障,留下调用者挂起。如果发生这种情况,调用者可能不得不夭折,这在本地调用中是决不会出现的。一个远程过程调用故障之后,调用者很难得知在故障发生前,该过程调用已经进行到了哪一步。这通常有三种可能:35RPC的语义在被调用者接收到调用它的命令之前,它发生了故障。在执行其过程体时,被调用者发生了故障;被调用者正确地完成了其过程体的执行,但在把结果返回给调用者之前发生了故障。此外,还有调用者在发出调用命令之后并在获得调用结果之前发生了故障。36RPC语义的规则由于调用者无法知道到底出现哪种情况,因此,系统必须提供一些基本的保护机制来确

13、保RPC正确效果。不过,这个问题由于通信方面也可能出错以及系统试图进行错误矫正而混杂在一起,使得一个远程过程在成功地完成其执行之前,实际上可能引用了若干次。不同的RPC实现方案定义的这种效果或RPC语义是有差别的。37RPC语义的规则几种常用的定义RPC语义的规则是:1ast-of-many 对执行一个远程过程调用而言,被调用的过程可能执行若干次,但规定其最后一次执行的结果作为返回结果;38RPC语义的规则at-most-once 若调用者收到了回复消息,则被调用的过程正确地完成了它的一次(仅仅一次)执行。如果调用者没收到回复消息,或者,如果调用者在获得回复消息之前发生故障,那么,这时的调用效

14、果就看作是根本就没有执行相应的过程。39RPC语义的规则at-1east-once 在场点正常情况下,则远程过程至少执行一次,且回复消息可能返回一次或多次。在场点故障时,就不能保证远程过程是否已被执行或曾返回任何回复消息。40RPC语义的规则exactly- once 若server正常,则远程过程将恰好执行一次,并返回一个调用结果。同send/receive 通信原语有许多变种一样,RPC也有一些不同的形式。例如可以允许异步远程过程调用,因此,调用者和被调用者可以并行执行,调用者负责在稍后某一时刻执行一个所谓的会合(rendezvous)来获取调用结果。41ONC/RPC协议头42ONC/R

15、PC协议头程序号:实现该程序的服务器.版本号:程序的版本.过程号:辨识服务器上的目的过程.发送方向:RPC请求为0,响应为1.事务处理标识符:辨识每个个别 RPC请求.43外部数据表示(XDR)外部数据表示(External Data Representation简称XDR)是表示层的一个协议,在RFC 1014 (Sun Microsystems, 1987)予以规定。XDR涉及数据编码格式的定义。XDR没有象其它协议那样的协议头或其它协议元素。44背景对于表示层的协议有良种操作模式:明显格式(explicit format):个别元素的描述和数据一道传送,因此,能够使接收者恢复数据记录的结

16、构(如ASN.1 Basic Encoding Rules(BER)。隐含格式(implicit format):在数据传送之前,在两个通信方之间就元素的结构和 表示包含一个协议。45隐含格式在隐含格式中存在两种不同的数据编码格式:经典格式(canonocal format):发送者总归把数据转换为一个公共统一的格式,由接收者重新转换回。服务器使之正确格式(server makes it right format):发送者将数据保留为自己本地的表示格式,并且加一个标识符到消息,给接收者以发送者的格式信号。46外部数据表示(XDR)外部数据表示(XDR)使用隐含的经典格式。47数据编码(Data

17、 encoding)二进制整数表示有两种形式:低位字节在最低内存地址(little-endian)低位字节在最高内存地址(big-endian)理论上,在一个字节中位的次序有同样的差别,但是,在实际上所有的处理机都采用big-endian格式安排在一个字节中位的次序。48数格式49正文的编码数值的编码通常由处理机硬件决定,而软件在正文和复杂的数据对象的编码中是至关重要的。有了一个从代码到字符的映照,正文简单地是一个无意义的字节序列。标准化的联结数值和字母的映照表包括ASCII和EBCDIC代码。不幸地,这些具有功能上不同的结构。例如,字母A在EBCDIC中表示为C1(16),在ASCII中表示

18、为41(16)。50复杂数据对象的编码联合(union)和结构(structure)是由上述基本数据类型构造的复杂数据对象;它们由程序员或编译程序确定。程序的说明原则上是可互交换的,这些对象在二进制交换中最常见的问题是它们所含元素的不同的校准。51复杂数据对象的编码一个最佳访问在内存中的数据结构通常假定单个元素位于处理机字边界(因此,它们的开始地址是偶数或可被4整除)。大多数处理机对超过边界的操作要求一个附加的周期,某些处理机(例如大多数RISC CPU)不能在非校准的地址上工作。因为在结构中的元素不总有字长的倍数,大多数编译程序自动地嵌入52复杂数据对象的编码4整除)。53复杂数据对象的编码一个最佳访问在内存中的数据结构通常假定单个元素位于处理机字边界(因此,它们的开始地址是偶数或可被4整除)。54复杂数据对象的编码一个最佳访问在内存中的数据结构通常假定单个元素位于处理机字边界(因此,它们的开始地址是偶数或可被4整除)。55复

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论