跳转至

死锁

概述

死锁

多个进程互相等待对方释放资源,导致都无法继续执行。

死锁条件

死锁四个必要条件
  • 互斥条件: 资源互斥使用
  • 请求和保持: 请求新资源时保持已有资源
  • 不剥夺: 已分配资源不能强制剥夺
  • 循环等待: 存在循环等待链

死锁处理

预防死锁

预防死锁

破坏死锁四个必要条件之一。

方法:

  • 破坏请求和保持: 一次性申请所有资源
  • 破坏不剥夺: 允许剥夺资源
  • 破坏循环等待: 资源有序分配

避免死锁

避免死锁

动态检查,避免进入不安全状态。

银行家算法:

  • 检查资源分配是否安全
  • 只在安全时才分配

检测和解除

检测和解除

允许死锁发生,然后检测并解除。

检测方法:

  • 资源分配图
  • 死锁定理

解除方法:

  • 剥夺资源
  • 撤销进程

参考资料