在某些操作系统中,尝试使用以下方案防止死锁。每个进程都分配有唯一的时间戳,如果被终止,则会以相同的时间戳重新启动。假设Ph是保存资源R的进程,Pr是请求相同资源R的进程,T(Ph)和T(Pr)分别是它们的时间戳。等待或抢占进程之一的决定基于以下算法。
if T(Pr) < T(Ph)
then kill Pr
else wait
以下哪一项是TRUE?
(A)该方案没有死锁,但没有饥饿
(B)该计划并非没有僵局,而是没有饥饿
(C)该计划既没有僵局,也没有饥饿
(D)该计划既无死锁,又无饥饿答案: (A)
解释:
- 该方案确保请求过程的时间戳始终小于保持过程的时间戳
- 如果终止,则该进程将使用相同的时间戳记重新启动,并且该时间戳记不能大于现有时间戳记
从1和2开始,很明显任何具有LESSER时间戳的新进程都将被杀死,因此没有DEADLOCK可能
但是,新进程将降低时间戳,因为它的时间戳较低,可能不得不无限等待(因为被终止的进程也将具有与先前被终止的时间戳相同的时间戳)。绝对有可能饿死
所以答案是A
这个问题的测验