我无法弄清楚死锁的两个条件是如何彼此不同的。保持和等待看起来像是循环等待的一个子集。
答案 0 :(得分:4)
保持并等待和循环等待是发生死锁时遇到的条件。
这意味着如果不满足这两个条件,您就不会陷入僵局。
保持和等待条件表明该进程持有可能(或可能不)其他进程所需的资源。这里的关键点是该进程持有这些资源,并且在它访问所请求的资源(由其他进程持有)之前不会释放它们。
循环等待条件表明存在一系列进程,其中每个进程正在等待另一个资源持有的资源。在这种情况下,它并不一定意味着进程持有另一个请求的资源,而是所有进程都在等待另一个进程持有的资源。
有关更多信息,请参阅这些文章:
http://www.cs.yale.edu/homes/aspnes/pinewiki/Deadlock.html http://nob.cs.ucdavis.edu/classes/ecs150-1999-02/dl-cond.html
答案 1 :(得分:0)
对于保留和等待,必须存在一个进程,该进程在等待其他进程当前持有的其他资源的同时保留已分配给它的资源。然而,对于循环等待发生系统中的进程形成循环列表或链,其中列表中的每个进程都在等待列表中下一个进程持有的资源。
需要注意的一点是:循环等待必须形成链(循环列表),而搁置和等待不是这种情况。
参考: http://www.personal.kent.edu/~rmuhamma/OpSystems/Myos/deadlockCondition.htm