死锁预防策略学习卡片
破坏互斥条件
- 核心思想
- 将必须互斥使用的资源改造为可共享使用
- 实现技术
-
- SPOOLing技术:将独占设备(如打印机)在逻辑上改造成共享设备
- 工作流程:进程请求被输出进程接收并缓冲,实际打印由后台完成
- 优点
- 从进程角度看资源可共享使用
- 缺点
-
- 适用范围有限,并非所有设备都可改造
- 系统安全性要求某些资源必须保持互斥性
- 实现复杂度较高
破坏不剥夺条件
- 方案一
- 当进程请求新资源得不到满足时,必须立即释放所有已持有资源
- 需要重新申请全部资源
- 方案二
- 由操作系统协助剥夺资源(考虑进程优先级)
- 应用场景:类似CPU剥夺调度,高优先级进程可抢占资源
- 缺点
-
- 实现复杂,需要保存和恢复进程状态
- 剥夺资源可能导致部分工作失效
- 反复申请释放增加系统开销
- 可能导致进程饥饿(长期得不到资源)
破坏请求和保持条件
- 静态分配方法
- 进程运行前一次性申请所有所需资源
- 资源未满足前不投入运行,运行期间保持所有资源
- 优点
- 实现简单,不会出现保持资源同时请求新资源的情况
- 缺点
-
- 资源浪费严重(短期使用资源被长期占用)
- 资源利用率低
- 可能导致进程饥饿(如需要多种资源的进程可能长期得不到运行机会)
- 饥饿示例:系统中A类(需资源1)、B类(需资源2)、C类(需资源1和2)进程竞争时,C类可能长期得不到运行
破坏循环等待条件
- 顺序资源分配法
-
- 给系统资源编号
- 进程必须按编号递增顺序申请资源
- 同类资源(编号相同)需一次性申请完
- 原理
- 持有大编号资源的进程不会逆向申请小编号资源
- 优点
- 确保至少有一个进程能获得所需资源(持有最大编号资源的进程)
- 缺点
-
- 新增设备需要重新编号,不便扩展
- 可能导致资源浪费(如必须先申请暂时不用的资源)
- 用户编程麻烦(需按固定顺序申请资源)
- 示例:打印机(5号)和扫描仪(7号)使用顺序受编号限制,可能造成打印机闲置
综合对比
- 适用性
- 互斥条件破坏范围有限
- 实现复杂度
- 不剥夺条件最高
- 资源利用率
- 静态分配法最差
- 优先级考点
-
- 理解各策略与必要条件的关系
- 掌握各策略优缺点
- 能分析实际案例采用的方法
- 联系哲学家就餐问题的解决方案