问题
问答题
设P1和P2是两个并发进程,它们共享一个临界资源,其执行临界区的算法如下。请判断该算法是否正确,并说明理由。如果有错,请改正。信号量S1、S2的初始值均为0。
P1 P2
_______________ ________________
while(1)while(1)
临界区:P(s1);
V(S1); 临界区;
… V(S2);
P(S2); …
…
答案
参考答案:正确。
执行顺序如下:P1先进入临界区,这时P2等在P(S1)上(因为S1初始值为0)。
只有当P1执行到V(S1)以后,P2才能进入临界区。P1再次进入临界区需要等P2执行完临界区并执行V(S2)以后。因此,P2在临界区执行时,P1不能进入临界区。
当P1、P2分别执行完一次循环以后,系统又回到第一次执行前的状态,因此临界区始终保持互斥状态。
综上所述,该算法保证了临界资源在任意时刻只有一个进程可以访问,因而是正确的。