自考网络操作系统考点:可靠原语、RPC远程过程调用与组通信
本文梳理自考《网络操作系统》中进程间通信的核心考点:如何用可靠原语保证消息不丢失、远程过程调用RPC的原理与透明性、调用十个步骤及优缺点,以及组通信的定义、特征与实现方式,帮助考生系统复习。
本文目录6 个章节
进程间通信如何保证消息不丢失
在客户—服务器模型中,消息可能在网络传输中丢失,为保证对方确实收到,可采用可靠原语。其做法是:客户向服务器发出请求后,服务器方由内核向客户内核返回一个确认(ACK),客户内核收到确认后唤醒客户进程。

客户与服务器之间一次请求/应答共涉及四个消息:客户向服务器的请求、服务器内核向客户内核的确认、服务器到客户的应答、客户内核向服务器内核的确认。理解这四个消息的方向是常考的简答题要点。
- 请求:客户 → 服务器
- 确认:服务器内核 → 客户内核
- 应答:服务器 → 客户
- 确认:客户内核 → 服务器内核
远程过程调用(RPC)的基本原理与透明性
在分布式系统中,节点A上的进程调用节点B上的一个进程时,节点A上的进程被挂起,被调用的过程在节点B上执行,消息以参数形式从调用进程传送到被调用进程,执行结果再返回给调用进程,这种通信方式称为远程过程调用。
其基本原理是允许某一节点上的程序调用其他节点上的过程或函数,而对程序员隐藏消息传递和I/O处理过程。
RPC的透明性指的是使远程调用尽可能像本地调用一样:调用方不知道被调过程在另一台机器上执行,被调方也不知道由哪个机器上的进程调用。为保证透明性,在客户机上设置客户代理,在服务器机上设置服务器代理。
- 透明性的关键:客户代理 + 服务器代理
- 对程序员不可见:消息传递、参数打包、I/O处理
远程过程调用的步骤
RPC的完整执行过程共十个步骤,答题时可按客户端、传输、服务器端三段来记忆。
- 客户过程以通常方式调用客户代理
- 客户代理构造消息并陷入内核
- 本地内核把消息发送给远程内核
- 远程内核把消息送给服务器代理
- 服务器代理取出参数并调用服务器
- 服务器执行服务,把结果送给服务器代理
- 服务器代理将结果打包成消息并陷入内核
- 远程内核把消息发回客户机内核
- 客户机内核把消息传送给客户代理
- 客户代理取出结果,返回给客户调用程序
RPC的优缺点与实现难点
优点是格式化好、使用方便、透明性好;缺点是缺乏灵活性。在具体实现上还有三个难点需要解决。
备考时建议把优点与难点对应起来理解:透明性是优点来源,但正因屏蔽了底层,灵活性不足、跨机型适配和数据量问题随之出现。
- 参数在不同机型之间的通用能力不足
- 缺乏一次调用中多次接收返回结果的能力
- 缺乏传送大量数据的能力
组通信的定义、特征与实现
在网络系统中,一个相互作用的进程集合称为组。一个发送者在一次操作中将一个消息发送给多个接收者,称为组通信,其形式是“一对多”——组内所有成员都能收到该消息。
组通信适用于网络系统中需要向多个进程同时分发同一消息的场合。其实现很大程度上依赖硬件,一些网络系统可为组指定一个特殊的网络地址。
实现方式包括多播式、广播式和单播式三种,需注意三者适用范围的差别,这是选择题的常考对比点。
- 组:相互作用的进程集合
- 特征:一对多,组内成员均接收
- 实现:多播式、广播式、单播式
常见疑问
可靠原语中的确认消息有几个?方向分别是什么?
一次请求/应答共四个消息:客户向服务器的请求、服务器内核向客户内核的确认、服务器到客户的应答、客户内核向服务器内核的确认。
RPC靠什么实现透明性?
在客户机上设置客户代理,在服务器机上设置服务器代理,由两个代理完成参数和消息的打包、传递,使远程调用看起来像本地调用。
组通信有哪些实现方式?
主要有多播式、广播式和单播式,具体实现很大程度上依赖于硬件,有些网络系统可为组指定一个特殊的网络地址。