假设某系统采用非抢占式优先级调度算法,若该系统有两个优先级相同的进程P1和P2,各进程的程序段如下所示,若信号量S1和S2的初值都为0。进程P1和P2并发执行后a、b和c的结果分别为:a=(1),b=(2),c=(3)。
空白(1)处应选择()
A.6
B.7
C.10
D.13
参考答案:D
解析:本题考查操作系统PV操作方面的基础知识。假设P1先运行,系统执行“a:=1;a:=a+2”后a=3;执行“V(S1)”后,S1=1,P1继续执行;执行“c:=a+1”后,c=4;执行“P(S2)”后,S2=-1,P1被阻塞。此时轮到P2运行,系统执行“b:=1;b:=b+2”后b=3;执行“P(S1)”后,S1=0,P2继续执行;执行“b:=a+b”后,b=6;执行“V(S2)”后,S2=0,唤醒P1,P2继续执行;执行“c:=b+c”后,c=10,P2运行结束。此时轮到P1运行,系统执行“a:=a+c”后,a=13,P1运行结束。综上分析可见,进程P1和P2并发执行后a、b和c的结果分别为:a=13,b=6,c=10。