一、题目
进程P1、P2、P3、P4、P5和P6的前趋图如下所示:
若用PV操作控制进程P1、P2、P3、P4、P5和P6并发执行的过程,需要设置8个信号量S1、S2、S3、S4、S5、S6、S7和S8,且信号量S1-S8的初值都等于零。下面P1-P6的进程执行过程中,①和②处应分别填写(26);③和④处应分别填写(27):⑤和⑥处应分别填写(28)。
1. 第26题选项
A. P(S1)P(S2)和V(S3)V(S4)
B. P(S1)P(S2)和V(S1)V(S2)
C. V(S3)V(S4)和P(S1) P(S2)
D. V(S3)V(S4)和P(S2)P(S3)
2. 第27题选项
A. V (S5)和P(S4)P(S5)
B. V(S3)和P(S4)V(S5)
C. P(S5)和V(S4)V(S5)
D. P(S3)和P(S4)P(S5)
3. 第28题选项
A. V(S6)和V(S8)
B. P(S6)和P(S7)
C. P(S6)和V(S8)
D. P(S6)和P(S8)
二、分析
- ① 由前驱图可知,
P2
进程结束后,应给P3
进程、P4
进程各释放一个信号量,由于S1
、S2
信号量已被使用,因此这里可以使用S3
、S4
信号量,即:V(S3)、V(S4)
; - ②
P3
进程开始前,需要分别等待P1
进程、P2
进程结束:由于P1
释放的信号量S1
已被P2
使用,因此P3
需等待P1
释放的S2
信号量,即:P(S2)
;由①可知P2
释放了S3
、S4
两个信号量,因此P3
可以等待S3
信号量,即:P(S3)
。所以这里应该填写P(S2)、P(S3)
; - ③
P3
进程结束后,需要执行P4
进程,因此需要释放S5
信号量给P4
,即:V(S5)
; - ④
P4
进程结束前,需要执行P2
、P3
进程,因此需要等待P2
进程释放的S4
信号量,即:P(S4)
,以及P3
进程释放的S5
信号量,即:P(S5)
。所以这里应该填写P(S4)、P(S5)
; - ⑤
P5
进程开始前,需要执行P4
进程,P4
进程结束时释放了两个信号量S6
和S7
,由于S7
信号量被P6
进程使用了,因此P5
应等待S6
信号量,即:P(S6)
; - ⑥
P5
进程结束后,需要执行P6
进程,由P6
进程开始前等待的两个信号量S7
(由P4
进程释放)、S8
可知,P5
应释放信号量S8
,即:V(S8)
。
三、答案
- 综上所述,答案应为:
- (26) D. V(S3)V(S4)和P(S2)P(S3)
- (27) A. V (S5)和P(S4)P(S5)
- (28) C. P(S6)和V(S8)