考虑具有多种共享资源类型的计算机系统,每种资源类型一个实例。每个实例一次只能拥有一个进程。拥有和释放资源是通过持有全局锁(L)来完成的。以下方案用于拥有资源实例:
function OWNRESOURCE(Resource R)
Acquire lock L // a global lock
if R is available then
Acquire R
Release lock L
else
if R is owned by another process P then
Terminate P, after releasing all resources owned by P
Acquire R
Restart P
Release lock L
end if
end if
end function
关于上述方案,以下哪个选择是正确的?
(A)该方案确保不会发生死锁
(B)该计划可能导致活动锁定
(C)该计划可能导致饥饿
(D)计划违反互斥性质答案: (A) (B) (C)
说明: (A)该方案可确保无死锁操作,因为没有保持和等待条件。
(B)该方案可能会导致优先级倒置问题,因此有可能发生动态锁定。
(C)该计划可能导致饥饿。例如,优先级进程可以被重复调度,并继续杀死较低优先级的进程。因此,低优先级的过程可能会饿死。
(D)满足互斥,因为一次只有一个进程可以获取和释放锁。
这个问题的测验