死锁和无限期推迟有什么区别?

时间:2013-10-20 21:02:17

标签: concurrency

死锁 - 一种情况,其中两个或多个竞争行为各自等待另一个完成,因此两者都没有。

无限期推迟 - 在其他流程受到系统关注的同时无限期地延迟流程的安排

这两个术语看起来非常相似。我怎么能分开呢?

2 个答案:

答案 0 :(得分:5)

  

在任何使进程等待的系统中   资源分配和流程调度决策是可能的   无限期地延迟进程和其他进程的安排   进程受到系统的关注。这种情况,各种各样   称无限期推迟,无限期封锁或饥饿,   可能像死锁一样具有破坏性

自:

http://wps.prenhall.com/esm_deitel_os_3/17/4402/1127072.cw/index.html

薰衣草的僵局条件(1968年) - 7.2.1

  

•每个想要拥有资源的流程都有一个循环列表   列表中的另一个。

     

•无法共享资源。

     

•只有所有者才能释放资源

     

•进程可以保留资源   请求另一个

自:

http://www.cs.auckland.ac.nz/~robert-s/415.340/lectures_1997/lecture35.pdf

因此无限期推迟导致1个流程遭受损失而其他流程正常继续,这可能是由于调度不佳或其他原因导致的,即无限期推迟的流程总是优先于同一资源之后的所有其他流程。在稍后的某个时间,它可能会以足够高的优先级获得资源。

当进程请求另一个进程持有的资源时,会产生死锁。该进程(A)将不会释放资源,直到它获取它正在请求的另一个资源,顺便提到另一个进程(B),它将不会释放它直到它收到另一个进程(C)所持有的资源。在获得(A)所持有的资源之前不会释放它。该方案涉及3个过程,A,B,C;但它可能涉及2个或更多过程的任何“圈子”。

答案 1 :(得分:3)

如果两个进程处于死锁状态,那么他们就不可能做任何有用的工作 - 因为它们彼此依赖,并且都不会产生。

如果流程无限期推迟,至少理论上可以继续这样的流程并在将来的某个时间做一些有用的工作。如果其他进程停止滥用资源或只是退出,或者如果您将进程的优先级无限期推迟,则可能会发生这种情况。