死锁发生的条件

Condition for deadlock to happen

死锁-

死锁是指两个或多个相互竞争的动作都在等待另一个动作完成的情况,因此从来没有一个动作完成。

要发生死锁,所有这四个条件必须同时满足

  1. 互斥
  2. 稍等
  3. 无抢占
  4. 循环等待

我们应用死锁检测算法来检查系统是否处于死锁状态。但是,如果上述任何条件失败(例如没有抢占失败,因此正在释放一些资源),这会导致系统无死锁。所以我认为,如果死锁检测算法发现状态不安全并且以上四个标准同时成立,那么我们可以说系统处于死锁状态。 不安全状态可能会也可能不会导致死锁。 但是同时满足这4个条件的不安全状态一定会导致死锁。

我想的对吗?

我还有一个问题。我们怎么能说死锁肯定发生了,因为下一刻某个进程可能会释放他们的资源来摆脱死锁。

Am I thinking right?

是的,你是对的。 请参阅此 link 了解为什么不安全可能不会导致死锁。

I have another question in my mind. How can we say deadlock has occurred definitely because the next moment some process may release their resources to get rid of deadlock.

说发生了死锁。导致死锁的所有进程都在等待获取某些资源。并且由于 "No preemption" 没有这样的进程会被抢占并因此释放资源。同样由于 "Hold and wait" 属性,进程需要更多资源才能继续,但不会放弃或释放它现在持有的任何资源,而是会等到所需资源得到满足。一旦出现死锁,除非打破上述条件之一,否则什么也不会发生(不可能有任何进展)。打破一个条件将使一些其他过程满足其要求并确保进度和完成。