死锁预防策略学习卡片

🔄

破坏互斥条件

点击查看详情

破坏互斥条件

核心思想
将必须互斥使用的资源改造为可共享使用
实现技术
  • SPOOLing技术:将独占设备(如打印机)在逻辑上改造成共享设备
  • 工作流程:进程请求被输出进程接收并缓冲,实际打印由后台完成
优点
从进程角度看资源可共享使用
缺点
  • 适用范围有限,并非所有设备都可改造
  • 系统安全性要求某些资源必须保持互斥性
  • 实现复杂度较高
⏸️

破坏不剥夺条件

点击查看详情

破坏不剥夺条件

方案一
当进程请求新资源得不到满足时,必须立即释放所有已持有资源
需要重新申请全部资源
方案二
由操作系统协助剥夺资源(考虑进程优先级)
应用场景:类似CPU剥夺调度,高优先级进程可抢占资源
缺点
  • 实现复杂,需要保存和恢复进程状态
  • 剥夺资源可能导致部分工作失效
  • 反复申请释放增加系统开销
  • 可能导致进程饥饿(长期得不到资源)
📦

破坏请求和保持条件

点击查看详情

破坏请求和保持条件

静态分配方法
进程运行前一次性申请所有所需资源
资源未满足前不投入运行,运行期间保持所有资源
优点
实现简单,不会出现保持资源同时请求新资源的情况
缺点
  • 资源浪费严重(短期使用资源被长期占用)
  • 资源利用率低
  • 可能导致进程饥饿(如需要多种资源的进程可能长期得不到运行机会)
  • 饥饿示例:系统中A类(需资源1)、B类(需资源2)、C类(需资源1和2)进程竞争时,C类可能长期得不到运行
🔄

破坏循环等待条件

点击查看详情

破坏循环等待条件

顺序资源分配法
  • 给系统资源编号
  • 进程必须按编号递增顺序申请资源
  • 同类资源(编号相同)需一次性申请完
原理
持有大编号资源的进程不会逆向申请小编号资源
优点
确保至少有一个进程能获得所需资源(持有最大编号资源的进程)
缺点
  • 新增设备需要重新编号,不便扩展
  • 可能导致资源浪费(如必须先申请暂时不用的资源)
  • 用户编程麻烦(需按固定顺序申请资源)
  • 示例:打印机(5号)和扫描仪(7号)使用顺序受编号限制,可能造成打印机闲置
📊

综合对比

点击查看详情

综合对比

适用性
互斥条件破坏范围有限
实现复杂度
不剥夺条件最高
资源利用率
静态分配法最差
优先级考点
  • 理解各策略与必要条件的关系
  • 掌握各策略优缺点
  • 能分析实际案例采用的方法
  • 联系哲学家就餐问题的解决方案