进程前驱图控制原理解析

发布时间 2023-04-26 10:09:14作者: 小顾变老顾

题目:

进程P1、P2、P3、P4和P5的前趋图如图所示。

 

若用PV操作控制进程P1~P5并发执行的过程,则需要设置5个信号量S1、S2、S3、S4和S5,进程间同步所使用的信号量标注在图1-4中的边上,且信号量S1~S5的初值都等于零,初始状态下进程P1开始执行。图1-5中a、b和c处应分别填写 (2) ;d和e处应分别填写 (3) ,f和g处应分别填写(4) .

 

(2)A.V(S1) V(S2)、P(S1)和V(S3) V(S4)  

  B.P(S1) V(S2)、P(S1)和P(S2) V(S1)

  C.V(S1) V(S2)、P(S1)和P(S3) P(S4)  

  D.P(S1) P(S2)、V(S1)和P(S3) V(S2)

(3)A.P(S1) 和V(S5)   B.V(S1) 和P(S5)
    C.P(S2) 和V(S5)  D.V(S2) 和P(S5)
(4)A.P(S3)和V(S4) V(S5)  B.P(S3)和P(S4) P(S5)
    C.V(S3)和V(S4) V(S5)  D.V(S3)和P(S4) P(S5)

 

解题思路:

首先得明确下几个概念:

信号量(Si):信号量相当于是进程之间共享的一个变量,且只能进行P操作或者V操作。初始值为0;

P: 信号量减1操作。P(S1) = --S1 等价于S1 = S1-1; 相当于需要申请一个单位的资源;

V:信号量加1操作。V(S1) = ++S1 等价于S1 = S1+1; 相当于生成一个单位的资源;

这种操作看似很简单,但是如果多个组合起来,就能很好的控制进程的执行顺序,且进程可以并行操作。

上图中P1是作业的开头,没有限制,所以无关PV操作。

P2依赖P1操作,P1操作完成后,会操作信号量S1通知P2.所以P2执行的前提是S1有资源,也就是P(S1)>0.否则只能等待;

后面的类似,能够得到如下关系: