饥饿和死锁(操作系统)

Starvation and Deadlock (Operating System)

我知道死锁和饥饿的定义,但我仍然对这几点感到困惑(无法得出哪个是正确的)

嗯,a是正确的。

饥饿会导致软锁或次优性能(调度)。

由于死锁是饥饿的特例(所有竞争者都是资源匮乏的)它们/不/不相关。

死锁:是指所有进程都无法访问资源,因为每个进程都在等待另一个进程并且存在一个循环。

饥饿: 是低优先级进程无法访问其所需资源的情况,因为有高优先级进程正在访问资源。在这种情况下,整个流程系统并没有停止。


因为只有低优先级进程在饥饿状态下无法访问资源,而在死锁状态下没有进程可以访问他们需要的资源因此死锁是饥饿的极端情况极端标准是无法访问资源的进程总数。


死锁和饥饿是相关的,因为两者都是进程无法访问资源的情况。


饥饿不会导致死锁,因为饥饿的低优先级进程一直在等待,而其他高优先级进程 运行 完成。

传言说,当他们在 1973 年关闭麻省理工学院的 IBM 7094 时,他们发现了一个低优先级的进程,该进程已于 1967 年提交,但尚未 运行。


Abraham Silberschatz、Peter B. Galvin、Greg Gagne 在 Operating System Concepts book 中提到

DeadLock : 如果两个线程永远互相等待,这种无限等待称为deadlock.Long 线程永远不会结束的等待也称为死锁。 饥饿:等待在某个点结束的线程的长时间等待称为死锁。 例如低优先级线程必须等到所有高优先级线程完成,它可能等待很长时间但在某个点结束,只不过是饥饿。