📜  操作系统死锁的条件

📅  最后修改于: 2021-09-27 15:01:20             🧑  作者: Mango

死锁是一种涉及多个资源和进程相互交互的情况。

我们可以将死锁的发生想象为楼梯上有两个人的情况。一个是上楼梯,另一个是下楼梯。楼梯很窄,一次只能坐一个人。结果,一个人不得不撤退,而其他人则继续前进并使用楼梯。一旦那个人完成,另一个人就可以使用那个楼梯。但在这里,没有一个人愿意退却,就等着对方退却。他们都不能使用楼梯。这里的人是过程,楼梯是资源。

当一个进程请求另一个进程占用的资源时,该进程需要另一个资源才能继续,但被第一个进程占用,则称为死锁

发生死锁需要4个条件。借助上述楼梯示例可以理解它们:

  1. 互斥:
    当两个人在平台相遇时,他们不能只是走过去,因为只有一个人的空间。这种只允许一个人(或进程)使用他们(或资源)之间的步骤的条件是发生死锁所必需的第一个条件。
  2. 保持并等待:
    当二人不退而守其阵地时,称为守。这是死锁的下一个必要条件。
  3. 无抢占:
    为了解决死锁,一个人可以简单地取消一个进程让其他进程继续。但操作系统不这样做。它将资源分配给处理器所需的时间,直到任务完成。因此,不会临时重新分配资源。这是死锁的第三个条件。
  4. 循环等待:
    当两人拒绝后退,等待对方后退,以便完成各自的任务时,称为循环等待。这是发生死锁的最后条件。

笔记:
所有 4 个条件都是发生死锁的必要条件。如果任何一个被阻止或解决,死锁就解决了。