【发布时间】:2015-10-11 20:12:52
【问题描述】:
我知道死锁和饥饿的定义,但我仍然对这几点感到困惑(无法得出正确的定义)
- a) 死锁是饥饿的极端情况
- b) 死锁和饥饿是两个不相关的概念
- c) 饥饿只会导致死锁
【问题讨论】:
我知道死锁和饥饿的定义,但我仍然对这几点感到困惑(无法得出正确的定义)
【问题讨论】:
死锁:是指所有进程都无法访问资源,因为每个进程都在等待另一个进程,并且存在一个循环。
饥饿:是指低优先级进程无法访问所需资源,因为有高优先级进程访问资源。在这种情况下,整个流程系统并没有停止。
因为,只有低优先级的进程在饥饿状态下无法访问资源,而在死锁状态下,任何进程都无法访问它们所需的资源,因此死锁是一种极端的饥饿状态 em> 极端标准是无法访问资源的进程总数。
死锁和饥饿是相关的,因为两者都是进程无法访问资源的情况。
饥饿不会导致死锁,因为饥饿的低优先级进程会一直等待,而其他高优先级的进程会运行完成。
有传言说,当他们在 1973 年关闭 MIT 的 IBM 7094 时,他们发现了一个在 1967 年提交且尚未运行的低优先级进程。‡
‡Abraham Silberschatz、Peter B. Galvin、Greg Gagne 在Operating System Concepts book 中提到
【讨论】:
嗯,a 是正确的。
饥饿可能导致软锁或次优性能(调度)。
由于死锁是饥饿的一种特殊情况(所有竞争者都资源匮乏),因此它们/not/无关。
【讨论】:
DeadLock :如果两个线程永远在等待对方,这种无限等待称为死锁。等待永远不会结束的线程的长时间等待也称为死锁。 饥饿:在某个点等待结束的线程的长时间等待称为死锁。 例如低优先级线程必须等待直到完成所有高优先级线程,它可能会等待很长时间但在某个点结束,只是饥饿。
【讨论】: