例题:
进程P1、P2、P3、P4和P5的前趋图如下所示:
若用PV操作控制进程P1、P2、P3、P4、P5并发执行的过程,则需要设置5个信号量S1、S2、S3、S4和S5,且信号量S1~S5的初值都等于零。下图中a、b和c处应分别填写(A);d和e处应分别填写(B),f和g处应分别填写(C)。
问题1
A.V(S1)、P(S1)和V(S2)V(S3)
B.P(S1)、V(S1)和V(S2)V(S3)
C.V(S1)、V(S2)和P(S1)V(S3)
D.P(S1)、V(S2)和V(S1)V(S3)
问题2
A.V(S2)和P(S4)
B.P(S2)和V(S4)
C.P(S2)和P(S4)
D.V(S2)和V(S4)
问题3
A.P(S3)和V(S4)V(S5)
B.V(S3)和P(S4)P(S5)
C.P(S3)和P(S4)P(S5)
D.V(S3)和V(S4)V(S5)
第一步:确定信号量的位置
因为这些进程都有先后关系,前面执行完才能到下一个,所以我们先按顺序确定一下信号量s1,s2,s3,s4,s5的位置。
①首先看P1,由P1引出一条信号量,那么S1显然在P1和P2之间。
②由P2出发引出了两条信号量,按照顺序:P2和P3之间的信号量应该是S2,而P2和P4之间的信号量就是S3。
③下面看P3,P3只引出一条信号量,那么P3和P5之间的信号量就是S4。
④最后看P4,P4也只引出一条信号量,那么P4和P5之间的信号量就是S5。
第二步:确定进程的PV操作
看图1:
信号量在被引入的地方(进程结束)会有一个V操作,在指向的地方(箭头)(进程开始)会有一个P操作。
那么显然a就是V(s1),b就是P(s1),c就是V(s2),V(s3)
d是P(S2),e是V(S4)
g是P(S4),P(S5)
答案选ABC