死锁预防是一种事前策略,通过限制资源申请方式,破坏死锁四个必要条件中的至少一个,使死锁不可能发生。
| 破坏条件 | 方法 | 优点 | 缺点 |
|---|---|---|---|
| 请求和保持 | 静态分配法 | 简单 | 资源利用率低 |
| 不可抢占 | 允许抢占 | 灵活 | 实现复杂,资源类型受限 |
| 循环等待 | 资源有序分配 | 利用率较高 | 编号不便 |
| 互斥 | 几乎无法破坏 | — | 互斥是资源固有属性 |
| 考法 | 解题套路 |
|---|---|
| 破坏哪个条件 | 静态分配 → 请求和保持;资源有序 → 循环等待 |
| 资源有序分配验证 | 检查进程是否按编号递增顺序请求 |
| 为什么不能破坏互斥 | 互斥是资源本身的属性(如打印机),不是 OS 决定的 |
| 预防 vs 避免 | 预防是事前限制(更保守),避免是事中检查(银行家算法) |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。