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