死锁¶
概述¶
死锁
多个进程互相等待对方释放资源,导致都无法继续执行。
死锁条件¶
死锁四个必要条件
- 互斥条件: 资源互斥使用
- 请求和保持: 请求新资源时保持已有资源
- 不剥夺: 已分配资源不能强制剥夺
- 循环等待: 存在循环等待链
死锁处理¶
预防死锁¶
预防死锁
破坏死锁四个必要条件之一。
方法:
- 破坏请求和保持: 一次性申请所有资源
- 破坏不剥夺: 允许剥夺资源
- 破坏循环等待: 资源有序分配
避免死锁¶
避免死锁
动态检查,避免进入不安全状态。
银行家算法:
- 检查资源分配是否安全
- 只在安全时才分配
检测和解除¶
检测和解除
允许死锁发生,然后检测并解除。
检测方法:
- 资源分配图
- 死锁定理
解除方法:
- 剥夺资源
- 撤销进程