操作系统中的RPC是什么?28 Apr 2025 | 7 分钟阅读 远程过程调用(Remote Procedure Call, RPC)是一种用于构建分布式、客户端-服务器应用程序的强大技术。它也被称为函数调用或子程序调用。远程过程调用是指计算机程序调用发生在不同地址空间的某个过程(过程的代码与本地过程调用相同),而无需程序员显式地说明远程交互的细节。程序员编写的代码与子程序是本地的还是远程的,基本上是相同的。这是一种通过请求-响应消息传递系统实现的客户端-服务器交互形式。 ![]() RPC 模型暗示了**位置透明性**,即调用过程在很大程度上是相同的,无论是本地的还是远程的。通常情况下,它们并非完全相同,以便可以区分本地调用和远程调用。远程调用通常比本地调用慢几个数量级且可靠性较低,因此区分它们很重要。 RPC 是一种进程间通信 (IPC) 的形式,因为不同的进程有不同的地址空间。即使物理地址空间相同,它们在同一台主机上也有不同的虚拟地址空间。而如果它们在不同的主机上,物理地址空间就不同。 如何进行远程过程调用调用环境被挂起,过程参数被传输到将要执行该过程的环境中,然后在该环境中执行该过程。 ![]() 当过程完成并产生结果后,它会被传回调用环境,然后在该环境中恢复执行,就像从常规过程调用返回一样。 注意:RPC 特别适合客户端-服务器(例如,查询-响应)交互,其中控制流在调用方和被调用方之间交替。从概念上讲,客户端和服务器不是同时执行的;相反,执行线程从调用方跳转到被调用方,然后再跳回来。RPC 类型在操作系统中,远程过程调用(RPC)有三种类型,例如: ![]() 1. 回调 RPC (Callback RPC) 这种类型的 RPC 可以在参与过程之间实现 P2P(点对点)范式。它帮助一个过程同时充当客户端和服务器。回调 RPC 具有以下功能,例如:
2. 广播 RPC (Broadcast RPC) 广播 RPC 是客户端将请求广播到网络,由所有具有处理该请求的方法的服务器进行处理。广播 RPC 具有以下功能,例如:
3. 批处理模式 RPC (Batch-mode RPC) 批处理模式 RPC 有助于在客户端将 RPC 请求排队、分离到传输缓冲区中,然后一次性将它们通过网络发送到服务器。批处理模式 RPC 具有以下功能,例如:
RPC 有什么作用?当使用 RPC 框架的程序语句被编译成可执行程序时,编译后的代码中会包含一个存根(stub),该存根代表远程过程代码。 当程序运行时并发出过程调用时,存根会接收请求并将其转发到本地计算机中的客户端运行时程序。第一次调用客户端存根时,它会联系名称服务器以确定服务器所在的传输地址。 客户端运行时程序知道如何寻址远程计算机和服务器应用程序,并通过网络发送请求远程过程的消息。类似地,服务器也包含一个运行时程序和存根,它们与远程过程本身接口,并且响应-请求协议以相同的方式返回。 RPC 的特点在操作系统中,远程过程调用(RPC)具有以下特点,例如:
RPC 如何工作?当调用远程过程时,调用环境被挂起,过程参数被传输到将要执行该过程的环境中,然后在该环境中执行该过程。 当过程完成时,结果会被传回调用环境,然后在该环境中恢复执行,就像从常规过程调用返回一样。 ![]() 远程过程调用(RPC)在操作系统中按以下步骤工作: 步骤 1:客户端、客户端存根和 RPC 运行时在客户端机器上执行。 步骤 2:客户端以通常的方式传递参数来启动客户端存根进程。过程参数的打包称为*封送 (marshalling)*。客户端存根存储在客户端自己的地址空间内,它还会请求本地 RPC 运行时将消息发送回服务器存根。 步骤 3:在此阶段,用户可以通过进行常规的本地过程调用来访问 RPC。RPC 运行时负责管理网络在客户端和服务器之间的消息传输,还负责重传、确认、路由和加密等工作。 步骤 4:服务器过程完成后,返回到服务器存根,服务器存根将返回值打包(封送)到消息中。然后服务器存根将消息发送回传输层。 步骤 5:在此步骤中,传输层将结果消息发送回客户端传输层,客户端传输层再将其消息发送回客户端存根。 步骤 6:在此阶段,客户端存根解封(unpack)结果包中的返回参数,执行过程返回到调用者。 远程过程调用(RPC)的问题在操作系统中,远程过程调用(RPC)面临一些必须解决的问题,例如: ![]() 1. RPC 运行时 RPC 运行时系统是一组例程和服务库,负责处理 RPC 机制底层的网络通信。在 RPC 调用过程中,客户端和服务器端的运行时系统代码负责绑定、使用适当的协议建立通信、在客户端和服务器之间传递调用数据以及处理通信错误。 2. 存根 存根的作用是为程序员编写的应用程序代码提供透明性。
3. 绑定 客户端如何知道要调用谁以及服务 resides 何处? 最灵活的解决方案是使用动态绑定,并在首次进行 RPC 时在运行时查找服务器。第一次调用客户端存根时,它会联系名称服务器以确定服务器所在的传输地址。绑定包含两个部分:
4. 与 RPC 相关的调用语义 它主要分为以下几种选择:
RPC 的特性以下是远程过程调用 (RPC) 的基本特性:
RPC 的优点以下是 RPC 的一些优点或好处,例如:
RPC 的缺点以下是使用 RPC 的一些缺点或不足之处,例如:
|
我们请求您订阅我们的新闻通讯以获取最新更新。