C08
银行家算法
Need = Max − Allocation,找一条「都能跑完」的顺序——安全才放贷,不安全不等于必死锁
开始讲解
交互实验
操作:
请求模拟:某进程请求一批资源,银行家三连问
玩法:直接改表里任何数字(Need 自动重算),点「单步」看安全性检测每轮选中谁、Work 怎么涨;被完成的行会变绿。改出一个谁都喂不饱的状态试试「不安全 ≠ 死锁」那句话还成不成立。
核心思想
- 先算 Need:Need = Max − Allocation,所有判定只看 Need 和 Available。
- 安全性检测:Work=Available 起步,找 Need ≤ Work → 假装跑完回收 Allocation;全绿则安全。
- 安全序列不唯一,题目给一条即可;找不到 ⇒ 不安全。
- 不安全 ≠ 死锁:只是无法保证;死锁必不安全,反之不成立。
- 请求三连问:≤ Need?≤ Available?试分配后仍安全?——任一不过:拒绝 / 等待 / 回滚。
真题演练
查看解析
深化笔记:10 · 操作系统深化 §D 死锁与银行家算法 (死锁四条件、处理四策略、安全性算法五步、2020-11 例题)。反查:21 · 考点反查索引。