单选题
关于临界区问题(critical section problem)是一个算法(假设只有进程P0和P1可能进入该临界区),算法如下(i为0或1),该算法______。
repeat
retry:if(turn≠-1)turn:=i;
if(turn≠i) go to retry;
turn:=-1;
critical section(临界区)
turn=0;
remainder section(其他区域)
until false;
A.不能保证进程互斥进入临界区,且会出现“饥饿”
B.不能保证进程互斥进入临界区,但不会出现“饥饿”
C.保证进程能互斥进入临界区,但会出现“饥饿”
D.保证进程互斥进入临界区,不会出现“饥饿”
【正确答案】
A
【答案解析】[解析] 例如当P0执行完语句turn=-1,刚好要进入临界区时,CPU又调度P1执行,P1能够顺利进入临界区,不能满足互斥。当P0执行完临界区时,CPU调度P1执行,P1在retry循环,CPU调度P0执行,P0继续执行,重复以上过程,会导致P1饥饿。