C08

银行家算法

Need = Max − Allocation,找一条「都能跑完」的顺序——安全才放贷,不安全不等于必死锁

开始讲解

0 / 0

交互实验

操作:

 
请求模拟:某进程请求一批资源,银行家三连问

玩法:直接改表里任何数字(Need 自动重算),点「单步」看安全性检测每轮选中谁、Work 怎么涨;被完成的行会变绿。改出一个谁都喂不饱的状态试试「不安全 ≠ 死锁」那句话还成不成立。

核心思想

  • 先算 Need:Need = Max − Allocation,所有判定只看 Need 和 Available。
  • 安全性检测:Work=Available 起步,找 Need ≤ Work → 假装跑完回收 Allocation;全绿则安全。
  • 安全序列不唯一,题目给一条即可;找不到 ⇒ 不安全。
  • 不安全 ≠ 死锁:只是无法保证;死锁必不安全,反之不成立。
  • 请求三连问:≤ Need?≤ Available?试分配后仍安全?——任一不过:拒绝 / 等待 / 回滚。

真题演练

查看解析