死锁避免策略学习卡片
🔒
安全序列
点击查看定义
安全序列 🔒
定义
系统按照某种顺序依次为进程分配资源,
所有进程都能顺利完成
并归还资源的执行序列
银行家比喻
假设银行家拥有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)
🔄
银行家算法流程
点击查看步骤
银行家算法流程 🔄
请求检查
:
检查请求是否超过Need矩阵声明值
检查系统剩余资源(Available)能否满足请求
试探分配
:
临时修改Available、Allocation和Need数据
安全性检查
:
循环检查剩余资源能否满足某进程需求
将可满足进程加入安全序列并模拟资源回收
全部进程加入则安全,否则不安全
快速查找安全序列技巧
• 首轮同时检查所有可立即满足的进程
• 批量加入安全序列后更新资源为∑Allocation + Available
📝
重要考点与易错点
点击查看详情
重要考点与易错点 📝
高频考点
• 安全序列的查找(给出Max/Allocation求安全序列)
• 安全状态、不安全状态与死锁的逻辑关系
• 多维资源情况下的矩阵计算
易错点
•
试探分配不是真实分配
•
不安全状态≠立即死锁
• Need矩阵必须通过Max-Allocation计算得到
选择题高频考点
:死锁必然推导链(死锁→不安全状态)
1/5