操作系统-PV操作

PV操作相关测试题

知识点:操作系统-进程间的通信

位于421-423章节。2018年和2019年连续考了两年几乎一样的题目。

---

先了解背景知识。

PV操作是什么?

是由计算机的操作系统控制的一种(抽象的)控制行为。P表示申请获取一个资源(不一定能申请到,这是关键),V表示释放一个资源。简单理解就是对一个全局变量进行加法和减法运算。

PV操作是用来干什么的?

用来控制信号量,对信号量进行加法和减法计算,从而控制进程的执行顺序(也就是进程之间的同步或者互斥)。

PV操作怎么用?

要解题,那么需要最最最基本的基础知识,那就是你必须要知道这里同步和互斥是什么意思、信号量是干嘛的、前驱图是什么。

在423这一章节,一来就说了什么是同步和互斥。

同步:简单来说,就是两(或多)个进程之间,需要按照时间顺序来的,那么这两个进程之间的关系就可以称为同步关系。书上原文:“所谓进程间的同步是指在系统中一些需要相互合作,协同工作的进程,这样的相互联系称为进程的同步”。

互斥:简单说就是多个(假设两个)进程可以同时执行,但是要执行使用的相同这个资源(比如打印机、共享变量)只有一个剩余了(或者只能让一个进程使用),进程们需要争抢资源,争抢结果就是其中一个抢到了就开始执行,一个没抢到就在那等着。


信号量:简单的说,对于剩余可以被分配给进程资源的数量(一般说的是临界资源,也就是只有一个可以被多个线程争抢),我们用一个值来表示,这个值就是信号量。通过后面具体的PV操作,我们可以知道,当信号量S大于等于0的时候,就表示资源可以使用的数量(2020年考题)。当S小于0的时候,就表示阻塞中的需要这个资源的进程数量(2020年考题,对比记忆)。信号量一般划分有两个大类,主要体现在信号量的初始化上(互斥时可以初始化为0,同步时可以初始化为1)。主要互斥的话就把信号量S初始化为0。比如本题,这种情况下,第一个进程在执行的时候需要先执行进程,再获取资源(本题没有体现获取资源的方法,但是书上的例题有)之后,再申请释放一个(下一个进程需要的,本题考点)资源,下一个进程再申请一个前面释放的资源,就可以控制进程之间的顺序。


前驱图:如题中的图。带箭头的边表示依赖关系(时间顺序),进程P2执行完毕后,就可以同时执行P3和P4。和信号量的关系,可以一条边就定义一个信号量,比如本题就是。


了解完了基础知识,那么继续了解如何使用具体的PV操作(规则,本题考点)。

P操作就是把信号量进行减一,表示这个信号量被占用了一个。如果剩下的信号量比0大(包含0),则P的这个进程就继续往前执行。否则就阻塞。(也就是看有没有剩余的信号量了,本题考点)

V操作就是把信号量加一,表示释放了一个信号量。如果加了之后的信号量比0大(不包含0),那么V的这个进程就继续执行。如果剩余的信号量没有了,也就是小于和等于0,那么就把阻塞的也就是在等待的进程唤醒其中一个,并把它插入就绪队列,然后V进程继续执行(大白话就是,此进程使用这个资源完毕,释放这个被争抢的资源让给别人,然后此进程可能去获取其他需要的继续执行的资源,也可能会直接结束)。


解题:

第一空(也就是①):因为p2需要一个s1,但是s1的信号量最开始为0,根据上面P操作的规则(信号量减1后比0小,就阻塞),所以p2要往前执行,就必选要在p1的时候释放一个s1,也相当于释放前趋图中p1指向p2的箭头。所以第一空是v(s1)。

第二空:根据前趋图,p2执行后,需要同时释放p2到p3以及p2到p4的信号量,根据p3里面的p(s2),所以我们可以确定在p2这里肯定要释放s2,所以第二空里面一定有一个v(s2),然后现在已经可以确定,第一题选C。


第三空:p3执行完毕后,要同时释放p3到p4以及p3到p5的信号量。因为P4中有p(s4),所以第三空这里一定有v(s4),其实现在已经可以确定选A了,因为B选项的释放s3在第二空已经释放过了。

第四空:因为p2到p4的信号量s3被释放过了,这里需要使用,所以第四空是p(s3),所以第二题选A。


第五空:就剩一个s6,没有使用了,所以这里是释放s6。到这已经可以确定第三题选D了。

第六空:根据前趋图,和上面已经推算出来的两个信号量,可以确定这里是要使用s5和s6。


  • 发表于 2021-09-09 05:29
  • 阅读 ( 1094 )
  • 分类:默认分类

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
亚里士德
亚里士德

13 篇文章

作家榜 »

  1. 亚里士德 13 文章