在某个操作系统中,尝试使用以下方案防止死锁。每个进程都被分配一个唯一的时间戳,如果被终止,将使用相同的时间戳重新启动。假设Ph是保存资源R的进程,Pr是请求相同资源R的进程,T(Ph)和T(Pr)分别是它们的时间戳。等待或抢占其中一个进程的决定基于以下算法。
null
if T(Pr) < T(Ph) then kill Pr else wait
以下哪一项是正确的?
(A) 该方案是无死锁的,但不是无饥饿的 (B) 该方案不是无死锁的,而是无饥饿的 (C) 该方案既不是无死锁的,也不是无饥饿的 (D) 该方案既无死锁又无饥饿 答复: (A) 说明:
- 该方案确保请求进程的时间戳总是小于等待进程的时间戳
- 如果终止,进程将使用相同的时间戳重新启动,并且该时间戳不能大于现有的时间戳
从1和2可以看出,任何时间戳较小的新进程都将被终止。所以 不可能出现僵局
然而,一个新的过程可能会降低时间戳 不得不无限期地等待 因为它的时间戳较低(as killed进程也将具有相同的时间戳,就像它之前被终止一样)。 饥饿绝对是可能的
所以答案是A 这个问题的小测验
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END