国家信息中心夏道藏24/12/2224/12/2211消息传递与过程调用的类似性国家信息中心夏道藏24/12/2224/12/2222远程过程调用send/receive/reply这种通信形式与大多数传统程序设计语言中的过程调用非常类似,见图,其中,“调用者/源”先挂起,然后把“参数/消息”传递给“被调用者/宿”,让它们去执行相应的任务;当任务执行完后返回时,它(们)再把作为结果的“参数/消息”回送给“调用者/源”,后者再继续执行下去。国家信息中心夏道藏24/12/2224/12/2233远程过程调用远程过程调用(RemoteProcedureCall简称RPC)是一个会晤层协议.虽然这种描述不完全对,因为,允许存在与利用RPC实现的应用层协议某些混合.RPC原理原先由Xerox的研究人员所开发.国家信息中心夏道藏24/12/2224/12/2244远程过程调用为了实现NFS,Sun公司的工程师开发了他们自己的RPC技术,通常称为SunRPC或ONC/RPC.ONC/RPC不仅用于NFS的实现,也用于许多其它网络应用.存在和ONC/RPC不同的其它RPC技术,例如DECRPC.虽然它们都遵从同样的概念途径,但是它们有不同的内部结构,因此,无互操作性.国家信息中心夏道藏24/12/2224/12/2255RPC和本地过程调用的比较远程过程调用本地过程调用由客户程序激活。请求参量被打成数据包。调用模块执行一个过程调用;由编译程序生成的代码把参量写到栈中。发送请求和在服务器程序中的参量拆包。跳转子过程。在服务器上参量被拆包并且传递给服务器的子过程。参量从栈装载到子过程的局部变量或寄存器。在服务器上执行请求(过程)。执行子过程代码。把结果打包和返回给客户。结果和子过程的返回值被存贮在寄存器中。由客户把结果拆包,继续正常的程序遵照执行。调用的过程访问数据。国家信息中心夏道藏24/12/2224/12/2266远程过程调用过程调用把“数据”和“控制”这两者从调用者传递给被调用者。过程是易于理解的,而且已经广泛地用作传统程序设计语言的基本组成成份。基于此原因,人们自然想起应把这个概念引入分布式操作系统。国家信息中心夏道藏24/12/2224/12/2277远程过程调用远程过程调用(RemoteProcedureCall)就是把过程调用的概念加以扩允后引入分析式环境中的一种形式。远程过程调用的形式和行为与传统的过程调用的形式和行为类似,主要差别在于被调用的过程实际运行在一个与调用者所在场点不同的场点上,见图。因此,需要设计相应的软件来实现两者之间的连接和信息沟通。国家信息中心夏道藏24/12/2224/12/2288远程过程调用示意图国家信息中心夏道藏24/12/2224/12/2299RPC的通信模型图国家信息中心夏道藏24/12/2224/12/221010RPC机制的结构及实现RPC机制的结构由下列成份组成:⑴stub:client和server各一个;⑵约束(binding):使client能够定位到相应的server;⑶控制部分:为追踪RPC的调用状态所设;⑷传送部分:确定如何将信息从一个场点传送到另一个场点。国家信息中心夏道藏24/12/2224/12/221111实现RPC的一般过程图国家信息中心夏道藏24/12/2224/12/221212实现RPC的一般过程实现RPC的一般过程实现RPC的一般过程可概括如图所示:其中,客户的stub与一个客户连接,它对于该客户就像一个“服务器”。在调用时,它截取客户的远程过程调用命令后,利用通信网络向服务器发送“请求服务”的信息。在返回时,它获取返回消息,并带返回结果返回到客户,然后客户继续执行。国家信息中心夏道藏24/12/2224/12/221313实现RPC的一般过程Server’sstub与一个server连接,它对于该server就像一个“client”。在调用时,它收到远程调用请求后,产生一个本地调用,去执行被请求的远程过程。在返回时,它截取远程过程的返回结果,并形成返回消息发送出去。国家信息中心夏道藏24/12/2224/12/221414实现RPC的一般过程总之,stub包含了一组RPC机制的操作原话,这些原语构成了RPC调用的实现细节,它可独立于client和server编程,在编译时再连接起来。国家信息中心夏道藏24/12/2224/12/221515实现RPC的一般过程RPC的实现要考虑两个方面的问题:第一,当进行远程过程调用时,调用场点必须能定位出被调用的过程实际上运行在哪个场点上;第二,相关的两个场点必须能协同合作交换信息。所有这些对用户都...