PV操作是软件评测师考试的高频考点,经常出现在上午场的客观选择题当中。对于系统中的每个进程,其工作的正确与否不仅取决于它自身的正确性,而且与它在执行中能否与其他相关进程正确地实施同步互斥有关,PV操作是实现进程同步与互斥的常用方法。下面就该知识点的基础知识结合例题进行总结学习。
一、信号量
信号量可以有效地实现进程的同步和互斥。在操作系统中,信号量是一个整数,当大于等于0时,代表可供并发使用的资源实体数;当小于0时,其绝对值表示正在等待使用临界区的进程数。建立一个信号量必须说明所建信号量所代表的意义和设置初值,以及建立相应的数据结构,以便指向那些等待使用临界区的进程。
二、同步与互斥
在多道程序环境的系统中存在多个可以并发执行的进程,故进程间必然存在资源共享和相互合作的问题,进程通信是指各个进程交换信息的过程,这时候就涉及到同步和互斥的问题。
(1)互斥:在多道程序系统环境中,各进程可以共享各类资源,但有些资源一次只能供一个进程使用,称为临界资源,如打印机、共享变量和表格等。进程间的互斥是指系统中各进程互斥使用临界资源。一组并发的进程中一个或多个程序段,因共享某一个公有资源而导致他们必须以一个不允许交叉执行的单位执行,所以互斥信号量的取值只能是1或0。简而言之,互斥是要保证临界资源在某一时刻只能被一个进程访问。
(2)同步:在计算机系统中,多个进程可以并发执行,每个进程都以各自独立的、不可预知的速度向前推进,但是需要在某些确定点上协调相互合作进程间的工作。例如,进程A向缓冲区送数据,进程B从缓冲区取数据加工,当进程B要取数据加工时,必须是进程A完成了向缓冲区送数据的操作,否则进程B必须停下来等待进程A的操作结束。可见,进程间的同步是指进程间完成一项任务时直接发生相互作用的关系。异步环境下的一组并发进程因直接制约而互相发送消息,进程互相合作和等待,使得各个进程按一定的速度执行的过程。简而言之,进程之间是异步执行的,同步是说使各个进程按一定的制约顺序和速度执行。
三、PV操作
对于系统中的每个进程,其工作的正确与否不仅取决于它自身的正确性,而且与它在执行中能否与其他相关进程正确地实施同步互斥有关。PV操作是实现进程同步与互斥的常用方法。P操作和V操作是低级通信原语,在执行期间不可分割。其中,P操作表示申请一个资源,V操作表示释放一个 资源。
(1)P操作:作用是将信号量减1,当信号量变成负数时,则停止调用P操作的进程,直到另一个进程对同一信号量执行V操作。若信号量S≥0,则执行P操作的进程继续执行;信号量若S<0,则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列。P操作可用以下过程表示,其中,Semaphore表示所定义的变量是信号量。
(2)V操作:作用是将信号量加1,当信号量小于等于0时,从相应的队列中选择一个进程唤醒它。若信号量S>0,则执行V操作的进程继续执行;若S≤0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,然后执行V操作的进程继续。V操作可用如下过程表示:
(3)利用PV操作实现进程的互斥
令信号量mutex的初值为1,当进入临界区时执行P操作,退出临界区时执行V操作。这样,利用PV操作实现进程互斥的代码段如下:
(4)利用PV操作实现进程的同步
进程的同步是由于进程间合作引起的相互制约的问题,要实现进程的同步可用一个信号量与消息联系起来。假定用信号量S表示某条消息,进程可以通过调用P操作测试消息是否到达,调用V操作通知消息已准备好。最典型的同步问题是单缓冲区的生产者和消费者的同步问题,例如一个生产者和一个消费者,缓冲区中可存放n件产品,生产者不断地生产产品,消费者不断地消费产品,如何用PV操作实现生产者和消费者的同步。可以通过设置3个信号量S、S1和S2,其中:
S是一个互斥信号量,初值为1,因为缓冲区是一个互斥资源,所以需要进行互斥控制;
S1表示是否可以将产品放入缓冲区,初值为n;
S2表示缓冲区是否存有产品,初值为0。
其同步过程如下图所示:
下面是近几年对该知识点考察过的真题,以后仍是考试出题的重点,大家要重视起来。
【2017年14题】假设系统有n(n≥5)个并发进程共享资源R,且资源R的可用数为2。若采用PV操作,则相应的信号量S的取值范围应为( )。
A、-1~n-1
B、-5~2
C、-(n-1)~1
D、-(n-2)~2
解析:本题考查PV操作的基础知识。
当所有进程运行完成/未开始时,信号量S的取值为2,当所有进程同时并发时,S=2-n=-(n-2),如果取值是负数时,表示有进程在等待资源的分配。所以信号量的范围为:-(n-2)~2。
故正确答案为:D
【2018年14题】假设系统有n(n≥6)个并发进程共享资源R,且资源R的可用数为3。若采用PV操作,则相应的信号量S的取值范围应为( )。
A、-(n-3)~3
B、-6~3
C、-(n-1)~1
D、-1~n-1
解析:本题考查PV操作的基础知识。
当所有进程运行完成/未开始时,信号量S的取值为3,当所有进程同时并发时,S=3-n=-(n-3),如果取值是负数时,表示有进程在等待资源的分配。所以信号量的范围为:-(n-3)~3。
故正确答案为:A
【2019年16题】假设系统有n(n≥5)个并发进程,它们竞争互斥资源R。若釆用PV操作,当有3个进程同时申请资源R,而系统只能满足其中1个进程的申请时,资源R对应的信号量S的值应为( )。
A、-1
B、-2
C、-3
D、0
解析:本题考查操作系统的基础知识。
3个进程同时申请,只能满足1个进程申请,则信号量S的值为:1-3=-2。信号量为-2表示有2个进程正在等待资源的分配。
故正确答案为:B
作者唯一官方个人微信公众号(昊洋与你一起成长):HYJY20180101
写于2021年9月8日
作者:昊洋讲师
版权所有,侵权必究