死锁避免策略学习卡片

🔒

安全序列

点击查看定义

安全序列 🔒

定义
系统按照某种顺序依次为进程分配资源,所有进程都能顺利完成并归还资源的执行序列
银行家比喻
假设银行家拥有100亿资金,BAT三企业分别已借20、10、30亿,剩余40亿。当A申请20亿时,存在两种安全序列:
1. T→B→A
2. A→T→B
判断标准
若存在至少一个安全序列,则系统处于安全状态;否则为不安全状态
⚠️

安全状态 vs 死锁

点击查看关系

安全状态与死锁 ⚠️

  • 安全状态:存在安全序列,一定不会发生死锁
  • 不安全状态:无安全序列,可能发生死锁
重要结论
1. 不安全状态未必死锁(若进程未同时申请资源)
2. 死锁一定处于不安全状态

选择题高频考点:安全状态、不安全状态与死锁的三者包含关系

🏦

银行家算法

点击查看定义

银行家算法 🏦

起源
Dijkstra提出,最初用于银行系统,后应用于操作系统死锁避免
多维扩展
计算机系统含多种资源(如打印机、扫描仪),将单维资金模型扩展为多维向量
示例:5个进程(P0-P4)和3种资源(R0-R2),初始资源(10,5,7)
关键数据结构
Available[m]: 可用资源向量
Max[n][m]: 最大需求矩阵
Allocation[n][m]: 分配矩阵
Need[n][m]: 需求矩阵(Need = Max - Allocation)
🔄

银行家算法流程

点击查看步骤

银行家算法流程 🔄

  1. 请求检查
    • 检查请求是否超过Need矩阵声明值
    • 检查系统剩余资源(Available)能否满足请求
  2. 试探分配
    • 临时修改Available、Allocation和Need数据
  3. 安全性检查
    • 循环检查剩余资源能否满足某进程需求
    • 将可满足进程加入安全序列并模拟资源回收
    • 全部进程加入则安全,否则不安全
快速查找安全序列技巧
• 首轮同时检查所有可立即满足的进程
• 批量加入安全序列后更新资源为∑Allocation + Available
📝

重要考点与易错点

点击查看详情

重要考点与易错点 📝

高频考点
• 安全序列的查找(给出Max/Allocation求安全序列)
• 安全状态、不安全状态与死锁的逻辑关系
• 多维资源情况下的矩阵计算
易错点
试探分配不是真实分配
不安全状态≠立即死锁
• Need矩阵必须通过Max-Allocation计算得到

选择题高频考点:死锁必然推导链(死锁→不安全状态)

1/5