自考网络操作系统考点:进程同步与互斥、PV操作全解析
梳理自考网络操作系统中进程同步与互斥的概念区别、P/V操作定义与使用步骤、信号量初值设置、消息缓冲与信箱通信、同步与异步原语等核心考点,帮助自考生高效复习备考。
本文目录6 个章节
先抓主线:同步、互斥和PV操作是本部分核心
网络操作系统关于进程通信的考题,大多围绕三块展开:同步与互斥的概念辨析、P/V操作的定义与使用、消息传递类通信机制(消息缓冲、信箱、原语)。复习时建议先把概念之间的关系理清,再记忆操作步骤,最后通过对比题巩固细节。

下面分考点逐一整理,均为常考的基础知识点。
同步与互斥:概念辨析与区别
同步是指相互合作的两个进程需要在某个(些)确定点协调工作:一个进程到达该点后,除非另一进程已完成某些操作,否则必须停下来等待。互斥是指两个进程不能同时使用同一临界资源,只能一个进程用完后另一个才能使用。
两者的关键区别在于制约关系的类型:同步是直接制约关系,表现形式为进程—进程;互斥是间接制约关系,由争用资源引起,表现形式为进程—资源—进程。答题时抓住这一点即可准确区分。
- 同步特征:一个进程在某点等待另一进程提供信息,直接制约
- 互斥特征:争用同一临界资源,间接制约
- 判断技巧:看进程之间是“等对方干活”还是“抢同一个资源”
P/V操作的定义与信号量的物理意义
P、V操作是定义在信号量S上的两个操作。P(S):先将S减1;若S≥0,调用进程继续运行;若S<0,调用进程被阻塞,插入等待信号量S的阻塞队列。V(S):先将S加1;若S>0,调用进程继续运行;若S≤0,从阻塞队列中唤醒头一个进程,然后调用进程继续运行。
信号量的物理意义:当S>0时,S的数值表示某类可用资源的数目,执行P操作意味着申请分配一个单位的资源;当S≤0时,表示无资源可用,S的绝对值表示阻塞队列中的进程数;执行V操作意味着释放一个单位的资源。
利用P/V操作实现互斥的步骤:先根据问题列出各进程要执行的程序;再设置信号量,在临界区前加P(S)、临界区后加V(S);最后确定初值,互斥问题中信号量通常取互斥资源的个数。
利用P/V操作实现同步的步骤:列出各进程程序;有几个同步点就设几个信号量,等待处加P(S),发信号处加V(S);同步问题中信号量初值一般取0。
常见易错点:同步与互斥中信号量初值设置不同——同步一般取0,互斥取资源个数。这是判断题和简答题的高频考点,务必记牢。
- P(S):S减1,S<0则阻塞
- V(S):S加1,S≤0则唤醒队首进程
- 互斥初值=资源个数,同步初值一般取0
高级通信原语、消息缓冲与信箱
高级通信原语的优点是能够在进程之间传递大量信息。
消息缓冲通信中,发送原语的作用是:将欲发送的消息从发送区复制到消息缓冲区,并把它挂到接收进程的消息缓冲队列末尾;若接收进程因等消息而阻塞,则将其唤醒。接收原语的作用是:把消息从消息缓冲区复制到接收区,然后将消息缓冲区从消息队列中消去;若无消息可接收,则进入阻塞状态。
信箱用于存放信件,信件是一个进程发送给另一进程的消息。信箱的数据结构由信箱头和信箱体组成:信箱头是描述部分,信箱体由若干格子组成,每格可存放一个信件。信箱头包括信箱名、信箱大小、已存信件数、空的格子数。
用信箱实现两进程通信的过程:进程A发送前先把消息组成信件,调用send原语投入进程B的信箱;进程B调用receive原语从信箱中取出信件,即完成一次通信。
- 信箱头四项信息:信箱名、大小、已存信件数、空格子数
- 发送原语:拷贝消息入缓冲区并挂队列,必要时唤醒接收进程
- 接收原语:拷贝消息到接收区并从队列删除,无消息则阻塞
网络环境下的消息传递与同步、异步原语
网络操作系统中采用消息传递通信机制的原因:基于共享变量的通信方式适用于网络中各节点内部诸进程之间的通信,而基于消息传递的通信方式适用于网络中各节点之间的进程通信。消息传递机制中的通信方式包括通信原语、远程过程调用和组通信三种。
同步原语(阻塞通信原语):进程调用send原语后,消息开始发送时发送进程即处于阻塞状态,直至消息完全发送完毕才能执行后继语句;调用receive原语时也不立即返回控制,要等到消息实际接收并放入指定接收区后才返回继续执行。
异步原语:发送进程调用send原语后不进入阻塞状态,不等消息发送完就继续执行后继语句。
使用异步通信原语时,发送者在消息发送完成前不能使用缓冲区,因为若在发送期间使用或修改原缓冲区会造成错误。解决办法有两种:一是采用带拷贝的非阻塞原语,由内核把消息拷贝到内核缓冲区,允许调用进程继续运行;二是带中断的非阻塞发送,消息发送完成后中断发送进程,通知其缓冲区可用。
复习建议:把同步与异步原语的差异归纳成“发送后是否阻塞、何时返回控制”两问来记忆,再做对比选择题型练习,效果更好。
- 节点内部通信用共享变量,节点之间通信用消息传递
- 三种通信方式:通信原语、远程过程调用、组通信
- 异步原语缓冲区问题的两种解法:带拷贝的非阻塞原语、带中断的非阻塞发送
常见疑问
同步和互斥最简单的区分方法是什么?
看制约关系类型:同步是进程间的直接制约,一个进程在某个点等待另一进程的信息;互斥是因争用同一临界资源产生的间接制约,表现为进程—资源—进程。
同步问题和互斥问题中信号量初值有什么不同?
互斥问题中信号量通常取互斥资源的个数;同步问题中信号量初值一般取0。
为什么异步通信原语在消息发送完成前不能使用缓冲区?
因为发送进程若在消息发送期间使用或修改原缓冲区会造成错误,解决办法是采用带拷贝的非阻塞原语或带中断的非阻塞发送。