操作系统-PV操作
WHAT?
操作系统中的一种同步机制,实现对于并发进程中临界区的管理。
并发进程
- 无交互并发进程:每个进程独立,无需PV操作
- 有交互并发进程:多个进程共享资源,需控制进程次序,防止进程因资源被占用而阻塞
临界区
并发进程中与共享变量有关的程序段称为临界区
P操作
申请资源
V操作
释放资源
信号量S
用来记录资源数量,作为判断是否满足P操作的条件
如S=1,表示可用资源数量为1
HOW?
来看一道题目
破题
-
S1-S4初始值都为0
-
将信号量看作互斥量,如果想要某个结点停止运行,对之结点进行P操作,S就会减少相应数量,一旦S小于0(记住S初值=0),进程被压入阻塞队列
-
如果完成了某个结点的任务,把它连向的结点进行V操作释放资源,等效于**了下一个其他结点的工作
-
前驱图:想要执行P2,必须先执行P1 / 想要执行P3,必须先执行P1P2
-
解题过程:一个进程A引出某些信号量,则在进程A末尾对这些信号量做释放(V)
信号量指向某进程B,则在B进程开-始位置对这些信号量进行申请(P)
具体解题细节
-
P1结点入度0(无指向它的边)—>为了此结点后续结点能运行,通过此结点的必然是V释放操作---->AB选项排除,P1操作完毕—>P1入阻塞队列—>后续执行P申请操作–>选C
-
发现执行完P2之后有个V(S3)操作,故P2指出的边S肯定为S3
-
四定三则第四条边带的信号量可推—>S4
-
分类讨论
-
情况1:P1指向P2的边信号量为S1,P1指向P3的边的信号量为S2
推导:
执行P3之前,操作应该为P(S3)P(S2)—>选项BD确定+执行P4前肯定要申请P(S4)---->B确定
-
情况2:P1指向P2的边信号量为S2,P1指向P3的边的信号量为S2
推导:
执行P3前,操作应该为P(S1)P(S3)无此选项—>故为情况1
-