flowchart TD
A["并发进程互斥使用资源<br/>+ 按需逐步申请"] --> B["死锁四必要条件<br/>互斥 / 请求并保持<br/>不可剥夺 / 循环等待"]
B --> C["死锁 = 存在进程集合<br/>每个进程都在等集合内另一进程占有的资源"]
C --> D1["预防:破坏四条件之一<br/>(静态,保守)"]
C --> D2["避免:银行家算法<br/>每次分配前检查安全状态<br/>(动态,需预知最大需求)"]
C --> D3["检测与解除:资源分配图化简<br/>+ 剥夺 / 撤销 / 回退<br/>(放任发生,事后处理)"]
核心概念:
| 概念 | 要点 | 易考点 |
|---|---|---|
| 死锁 | 一组进程中每个都在等待同组内另一进程释放资源,无外力则永远僵持 | 至少 2 个进程,且死锁时必然 ≥2 个进程阻塞(2019 年 30 题 IV) |
| 四必要条件 | 互斥、请求并保持、不可剥夺、循环等待 | 缺一不可:预防 = 破坏其一;循环等待是前三个共同导致的“结果性条件” |
| 安全状态 | 存在至少一个安全序列,按此顺序推进所有进程都能完成 | 安全 ⇒ 无死锁;不安全 ≠ 已死锁(只是可能,2013 年 32 题 C 项陷阱) |
| 安全序列 | 一个进程序列,每个进程所需剩余资源 ≤ 当前可用 + 排在其前的进程释放之和 | 可以有多个(2022 年 26 题:安全序列 2 个) |
| 死锁 vs 饥饿 | 死锁:互相等待、无外力永不解脱;饥饿:被调度策略长期冷落,理论上可解脱 | 判别线索:饿死的是“排队总被插队”,死锁的是“拿着东西等对方” |