我知道死锁和饥饿的定义,但我仍然对这几点感到困惑(无法得出哪一个是正确的)
答案 0 :(得分:10)
死锁:是指所有进程都无法访问资源,因为每个进程都在等待另一个进程并且存在一个循环。
饥饿:是指低优先级进程无法访问所需资源,因为存在访问资源的高优先级进程。在这种情况下,整个过程系统都没有停止。
因为,只有低优先级进程无权访问饥饿资源,而在死锁中没有进程可以访问他们需要的资源,因此死锁是饥饿的极端情况 极端标准是无法访问资源的进程总数。
死锁和饥饿是相关的,因为两者都是进程无法访问资源的情况。
饥饿不会导致死锁,因为一个饥饿的低优先级进程会一直等待,而其他具有高优先级的进程会一直运行完毕。
有传言说,当他们在1973年关闭麻省理工学院的IBM 7094时,他们发现了一个低优先级的流程,该流程在1967年提交但尚未运行。‡
‡ Abraham Silberschatz在Operating System Concepts book中提到,Peter B. Galvin,Greg Gagne
答案 1 :(得分:0)
嗯,一个是正确的。
饥饿会导致软锁或次优性能(日程安排)。
由于死锁是饥饿的特例(所有竞争者都资源匮乏),他们是/不/无关。
答案 2 :(得分:0)
DeadLock:如果两个线程一直在相互等待,则这种无限等待类型称为死锁。对永无休止的线程的长时间等待也称为死锁。 饥饿:长时间等待某个线程在某个点结束的线程称为死锁。 例如,低优先级线程必须等到完成所有高优先级线程后,它可能要等待很长时间,但要在某个时候结束,除了饥饿之外什么都没有。