PV操作
1.PV操作的相关概念
| 临界资源
虽然多个进程可以共享系统中的各种资源,但其中许多资源一次只能为一个进程所使用,我们把一次仅允许一个进程使用的资源称为临界资源。许多物理设备都属于临界资源,如打印机等。此外,还有许多变量、数据等都可以被若干进程共享,也属于临界资源。
| 临界区
对临界资源的访问,必须互斥地进行,在每个进程中,访问临界资源的那段代码称为临界区。
| 信号量机制
信号量的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。
| 信号量的物理含义
S>0 表示有S个资源可用
S=0 表示无资源可用
S<0 则 |S| 表示S等待队列中的进程个数
| PV操作
用于处理进程互斥问题,协调资源的作用。
P操作,代表需要、申请、锁定、占用资源。信号量 S - 1;
如果减 1 后大于等于 0,即 S - 1 >= 0,即 S >= 1 ,则往下执行,
有些题目里,如果进程需要开启,那信号量往往就要满足这个条件,起码要 S = 1。
V操作,代表释放资源,信号量 S + 1;
如果加 1 后大于 0,即 S + 1 > 0 ,则往下执行
V操作之后,信号量如果还是为零甚至为负,说明资源释放得还不够,程序还要继续进行释放,不能进行下一步。
例:进程P1、P2、P3、P4和P5的前趋图如下图所示:
若用PV操作控制进程P1、P2、P3、P4和P5的并发执行过程,则需要设置5个信号量S1、S2、S3、S4和S5,且信号量S1~S5的初值都等于零。下图中a和b处应分别填入___;c和d处应分别填入___;e和f处应分别填入___。
解答:
根据前趋图,P1进程执行完需要通知P2和P3进程,所以需要利用V(S1)和V(S2)操作通知P2和P3进程,所以空a应该填V(S1)和V(S2),P2进程执行完要通知P4进程,所以空b应该填V(S3)。
P3进程运行前需要等待P1进程的结果,所以执行程序前要先利用1个P操作,所以空c应该填P(S2),而P3进程运行结束需要利用一个V操作通知P5进程,所以空d应该填V(S4)。
P4进程执行结束需要利用一个V操作通知P5进程,所以空e应该填V(S5),P5进程执行前需要等待P3和P4进程的结果,所以空f处需要两个P操作,则f应该填P(S4)和P(S5)。
例:进程 P1、P2 、P3、P4 和 P5 的前趋图如下所示
若用 PV 操作控制进程 P1、P2、P3、P4 和 P5 并发执行的过程,需要设置 5 个信号量 S1、S2、S3、S4 和 S5,且信号量 S1~S5 的初值都等于零。如下的进程执行图中 a 和 b 处应分别填写(26);c 和 d 处应分别填写(27) ;e 和 f 处应分别填写(28)。
(26)A.V (S1)和 P(S2)V(S3) B.P(S1)和 V(S2)V(S3)
C.V(S1)和 V(S2)V(S3) D.P(S1)和 P(S2)V(S3)
(27)A.P(S2)和 P(S4) B.V(S2)和 P(S4) C.P(S2)和 V(S4) D.V(S2)和 V(S4)
(28)A.P(S4)和 V(S5) B.V(S5)和 P(S4) C.V(S4)和 P(S5) D.V(S4)和 V(S5)
解:
26空中,ab,填的值根据p2来决定。执行p2之前需要吧p1的释放掉,所以a天p(s1)。p2结束后要生成空间给p3和p4.所以b天v(s2)v(s3),选B。
27空中,cd,填的值根据p3来决定。执行p3之前需要把p2的值s2释放掉,且生成空间给p4。所以c是p(s2),d填写v(s4)。选C。
28孔中,ef,填的值根据p4来决定。执行p4之前需要把p4的值释放掉,并且生成空间给p5。所以e是p(s4),f填写v(s5)。选A