版权归原作者所有,如有侵权,请联系我们

[科普中国]-远程过程调用

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

简介

进程间通信(IPC)是在多任务操作系统或联网的计算机之间运行的程序和进程所用的通信技术。有两种类型的进程间通信(IPC)。

本地过程调用(LPC)LPC用在多任务操作系统中,使得同时运行的任务能互相会话。这些任务共享内存空间使任务同步和互相发送信息。远程过程调用(RPC)RPC类似于LPC,只是在网上工作。RPC开始是出现在Sun微系统公司和HP公司的运行UNⅨ操作系统的计算机中。

产生RPC的概念与技术早在1981年由Nelson提出。1984年,Birrell和Nelson把其用于支持异构型分布式系统间的通讯。Birrell的RPC 模型引入存根进程( stub) 作为远程的本地代理,调用RPC运行时库来传输网络中的调用。Stub和RPC runtime屏蔽了网络调用所涉及的许多细节,特别是,参数的编码/译码及网络通讯是由stub和RPC runtime完成的,因此这一模式被各类RPC所采用。由于分布式系统的异构性及分布式计算模式与计算任务的多样性,RPC作为网络通讯与委托计算的实现机制,在方法、协议、语义、实现上不断发展,种类繁多,其中SUN公司和开放软件基金会在其分布式产品中所建立和实用的RPC较为典型。1

在SUN公司的网络文件系统NFS及开放网络计算环境ONC中,RPC是基本实现技术。OSF酝酿和发展的另一个重要的分布式计算软件环境DCE也是基于RPC的。在这两个系统中,RPC既是其自身的实现机制,又是提供给用户设计分布式应用程序的高级工具。由于对分布式计算的广泛需求,ONC和DCE成为Client/Server模式分布式计算环境的主流产品,而RPC也成为实现分布式计算的事实标准之一。1

原理通过IPC和RPC,程序能利用其它程序或计算机处理的进程。客户机/服务器模式计算把远程过程调用与其它技术(如消息传递)一道,作为系统间通信的一种机制。客户机执行自己的任务,但靠服务器提供后端文件服务。RPC为客户机提供向后端服务器申请服务的通信机制,如图R-4所示。如果你把客户机/服务器应用程序想作是一个分离的程序,服务器能运行数据访问部分,因为它离数据最近,客户机能运行数据表示和与用户交互的前端部分。这样,远程过程调用可看作是把分割的程序通过网络重组的部件。LPC有时也称耦合(Coupling)机制。

用这种方式分割程序,当用户要访问数据时就无需每次拷贝整个数据库或它的大部分程序到用户系统。其实,服务器只处理请求,甚至只执行一些数据计算,把得出的结果再发送给用户。因为当数据存放在一个地方时,数据库同步很容易实现,所以多个用户可同时访问相同的数据。

分布式计算环境是由一个通信系统——网络连接的计算机集群。很容易把这个网络看成一个计算平台,若是对等方式,其中任何一台计算机都能成为客户机或服务器。一些处理任务可被分成独立运行程序在不同的网络计算机上并行处理,而独立的程序被交给最适合这个任务的计算机处理。这种策略可利用计算机空闲资源,提高网络的效益。一个典型的企业网包括许多运行着不同操作系统的异构计算机系统。

随着企业网的产生,开发商必须编制可在各种计算机和网络通信协议中都能运行的程序。现在人们正努力使得远程过程调用独立,这意味着开发商就不用考虑底层的网络和网络上数据传输所用的协议,下面介绍RPC在开放式软件基金(OSF)的分布式计算环境(DCC)中实现的相关方法。RPC工作于多种分布式计算环境。

SunSoft的开放网络计算(ONC)的远过程调用/外部数据表示(RPC/XDR)协议被广泛采用。在三百一十万个运行网络文件系统(NFS)的系统中,有二百八十万个使用ONCRPC库,并在分布式应用中作为客户机或服务器。ONCRPC被IBM的所有操作系统所支持(除了OS/400)。UNⅨ系统实验室把RPC/XDR当作是UNⅨ System V Release 4的一个标准部分。Novell支持下一代ONC+传输自立远程过程调用(TI-RPC)技术.TI-RPC 使用运输层接口(TLI)实现传输自立。TLI提供了一种访问面向连接或非连接传输服务的通用方法(这在“STERAMS环境”中有所叙述)。

Open Software Foundation(OSF)RPC 开放软件基金会(OSF)的RPC

RPC工具提供了一种编程语言和编译器,它们使用可看作是本地过程的可运行于客户机和服务器上的模块开发分布式应用程序。运行时设施(run-timefacility)使得分布式应用程序能在多机种异构系统上运行,这样使得底层体系结构和运输协议对于应用程序是透明的。

程序员用接口定义语言(IDL)建立接口定义(interface definition)。IDL是程序员用来设计远程运行的过程的工具。IDL编译器把IDL接口定义转换成与客户机和服务器相连的占位程序(stub)。客户机上的占位程序可加入到服务器的过程,而服务器上的占位程序也可加入到客户机过程。位于客户机服务器的RPC运行时设施与占位程序合作,来提供RPC操作。

异构环境中使用RPC的一个问题在于,不同的机器有不同的数据表示,OSFRPC通过具有调用机器的基本数据表示的特征调用来解决这个问题。当收到调用时,若根据特征知道两台机器数据表示不同的话,接收器就进行数据转换。

RPC运行时设施提供把客户机请求传送给服务器和在网上发送和接收响应的功能。DCERPC运行时设施也和网络上其它DCE服务相互作用,这些DCE服务有命名、安全和定时服务。运行时设施有下列特征:

可在多种网络上运行。开发者无需为每个网络编写特定的应用程序。

提供客户机或服务器或网络上的故障恢复。它支持文件系统、数据库和其它传输可变长数据的服务。

提供独立于任何一个目录服务的基于名字定位服务器的方法。

提供安全工具的接口,以防RPC通信遭受破坏。安全服务保证机密信息的保密性和提供鉴别来保护通信完备性。

支持网上并发或并行处理的多线程调度,于是一个应用程序就能同时执行多个操作

提供多供应商提供的系统环境的可移植性和相互操作性。

有几种RPC模式。一个很流行的模式是开放软件基金会的分布式计算环境(DCE)。1991年11月,美国电气和电子工程师协会在它的ISO远程过程调用规范(ISO/IEC CD 11578 N6561, ISO/IEC)中定义了远程过程调用。

远程过程调用(RPC)跨越了开放系统互连(OSI)网络通信模型中的传输层和应用层。远程过程调用使得开发应用程序更容易。

客户端/服务器通信的替代方法包括信息队列和IBM的高级程序间通信(APPC)。2

应用RPC在分布式系统中的系统环境建设和应用程序设计中有着广泛的应用,应用包括如下方面:1

1、分布式操作系统的进程间通讯

进程间通讯是操作系统必须提供的基本设施之一,分布式操作系统必须提供分布于异构的结点机上进程间的通讯机制,RPC是实现消息传送模式的分布式进程间通讯的手段之一。

2、构造分布式计算的软件环境

由于分布式软件环境本身地理上的分布性, 它的各个组成成份之间存在大量的交互和通讯,R P C 是其基本的实现方法之一。ONC+和DCE两个流行的分式布计算软件环境都是使用RPC构造的,其它一些分布式软件环境也采用了RPC方式。

3、远程数据库服务

在分布式数据库系统中,数据库一般驻存在服务器上,客户机通过远程数据库服务功能访问数据库服务器,现有的远程数据库服务是使用RPC模式的。例如,Sybase和Oracle都提供了存储过程机制,系统与用户定义的存储过程存储在数据库服务器上,用户在客户端使用RPC模式调用存储过程。

4、分布式应用程序设计

RPC机制与RPC工具为分布式应用程序设计提供了手段和方便, 用户可以无需知道网络结构和协议细节而直接使用RPC工具设计分布式应用程序。

5、分布式程序的调试

RPC可用于分布式程序的调试。使用反向RPC使服务器成为客户并向它的客户进程发出RPC,可以调试分布式程序。例如,在服务器上运行一个远端调试程序,它不断接收客户端的RPC,当遇到一个调试程序断点时,它向客户机发回一个RPC,通知断点已经到达,这也是RPC用于进程通讯的例子。