进程P1、P2、P3和P4的前趋图如图3-2所示: 若用PV操作控制进程P1~P4并发执行的过程,则需要设置4个信号S1、S2、S3和S4,且信号量S1-S4的初值都等于零。图3.3中a、b、c、d处应分别填写( )。

admin2017-08-31  28

问题 进程P1、P2、P3和P4的前趋图如图3-2所示:

若用PV操作控制进程P1~P4并发执行的过程,则需要设置4个信号S1、S2、S3和S4,且信号量S1-S4的初值都等于零。图3.3中a、b、c、d处应分别填写(    )。

选项 A、V(S1)V(S2)、V(S4)、P(S2)和P(S3)、P(S4)
B、V(S1)V(S2)、V(S4)、P(S3)和P(S2)、P(S4)
C、V(S1)V(S4)、V(S2)、P(S2)和P(S3)、P(S4)
D、V(S1)V(S4)、V(S2)、P(S3)和P(S2)、P(S4)

答案C

解析 本题主要考查用PV操作控制进程的并发执行。首先需要弄清楚前驱图中给出的各进制的执行顺序。从图中不难看出进程P1没有前驱,也就是可以首先并发执行,而进程P2的前驱是P1,进程P3的前驱是P2,P4的前驱是P1和P3。那么怎么理解前驱呢?其实前驱就是指只有在前驱进程完成后,该进程才能开始执行。
    在本题的前驱图中不难看出,有4条路径,分别是P1→P2,P1→P4,P2→P3,P3→P4。而且题目也告诉我们分别有4初值为0个信号量(S1-S4),要用PV操作来控制进程P1~P4的并发执行。对于这类试题,笔者提醒大家要注意:一条路径对应一个信号量,在路径的源端进程中,应该对与该路径对应的信号量做V操作,而在路径的终端进程中,应该对与该路径对应的信号量做P操作。
    下面具体来求解这个题目。a空处,是在进程P1执行完成以后,那么根据题目的前驱图我们可以知道,这个时候它应该唤醒它的后继进程P2和P4,因此需要执行两个V操作,同样的道理,b空处也需要执行一个V操作。又由于进程P2在执行前对信号量S1进行了P操作,根据图可知,P1→P2的路径对应信号量S1。
    至于C空处,它是在进程P3执行前进行的处理。根据前驱的意义,可以知道执行P3要在P2完成后,因此这个时候,它首先需要判断P2进程是否完成,如果完成的话,会分别执行唤醒P3的V操作(换句话说就是会给相应的信号量进行加1操作),那么这时也可以通过同样的信号量来判断,即对相应的信号量进行减1操作,判断它是否大于0,如果大于等于0,则执行P3。结合题目给出的答案来看,这个信号量应该是S2。那么执行完P3后,它也需要唤醒它的后继进程P4,因此执行V(S3)操作。同样的道理,可知D空处应该是两个P操作,其操作的信号量分别是S3和S4。综上所述,可以知道本题的答案选C。
    其实做这类题也不难,首先需要对PV操作要有一个透彻的理解,另外就是能分析出题目各路径对应的信号量。
转载请注明原文地址:https://jikaoti.com/ti/EWf7FFFM
0

相关试题推荐
最新回复(0)