操作系统关键知识点之死锁预防策略(破坏环路等待与资源抢占)

操作系统关键知识点之死锁预防策略(破坏环路等待与资源抢占)

本次重新学习操作系统,希望通过对所学内容进行总结,与大家一同学习进步。以下将围绕“死锁预防”的剩余两种策略——破坏不可抢占条件破坏环路等待条件展开,结合具体方法、示例及局限性进行解析,最后通过表格总结完整的死锁预防体系。

一、知识点总结

(一)破坏不可抢占条件

  1. 核心思路

    • 允许系统强制回收进程已占有的资源,避免资源被单一进程长期独占导致死锁。
    • 实现方式
      • 资源虚拟化:通过中间层(如假脱机技术)实现资源间接访问,允许系统抢占虚拟资源(如磁盘缓冲区中的打印任务)。
      • 限制适用场景:仅适用于可虚拟化或可临时释放的资源(如磁盘空间),对物理设备(如正在打印的打印机)抢占可能导致数据混乱。
  2. 局限性

    • 虚拟化可能引入新瓶颈(如磁盘空间耗尽导致死锁),且非所有资源均可虚拟化(如数据库锁、操作系统表项)。

(二)破坏环路等待条件

  1. 资源按序编号策略

    • 核心规则:为所有资源分配唯一编号(如打印机=2,磁带机=4),要求进程按升序请求资源,禁止请求比已占资源编号低的资源。
    • 逻辑证明
      • 若进程A持有资源i(编号高),请求资源j(编号低),违反升序规则,被禁止;
      • 若所有进程均按升序请求,资源分配图中不会形成环路,从而避免死锁。
  2. 变种规则

    • 允许进程释放已占资源后请求低编号资源(如先占10号资源,释放后可请求1号资源),灵活性更高但需额外管理释放逻辑。
  3. 局限性

    • 资源编号难以统一:当资源类型复杂(如进程表项、数据库记录)时,定义合理的全局顺序几乎不可能,且可能违背实际使用逻辑(如先使用打印机后使用磁带机)。

(三)死锁预防方法汇总

死锁条件预防策略具体实现典型示例
互斥共享资源+虚拟化假脱机技术(打印机通过磁盘缓冲区共享)打印机守护进程管理打印任务
占有且等待一次性请求全部资源进程启动前声明所有资源需求,否则不运行大型机批处理系统作业资源声明
不可抢占资源虚拟化与强制回收抢占虚拟资源(如磁盘空间),物理资源通过中间层间接访问假脱机磁盘空间动态分配
环路等待资源按序编号(升序请求)为资源分配唯一编号,禁止降序请求编号规则:打印机(2)→磁带机(4)

二、通俗讲解

(一)破坏不可抢占条件:“硬抢资源的艺术”

  • 类比场景:一群人排队用复印机,其中一人突然要去开会,却占着复印机不放(不可抢占)。
    • 解决方法
      • 让他先把文件“存”到电脑(虚拟化),会后再打印,释放复印机给其他人(抢占虚拟资源)。
      • 注意:若他正在复印关键文件(物理资源独占),强行中断可能导致纸张混乱(数据丢失),所以硬抢只适用于可“暂停”的场景。

(二)破坏环路等待条件:“按顺序排队,别插队”

  • 类比场景:四个人聚餐,筷子按编号1(勺子)、2(筷子)、3(叉子)摆放,规则是“只能从编号小的往大的拿”。
    • 死锁预防逻辑
      • 若A拿了2号筷子,只能再拿3号叉子,不能回头拿1号勺子;
      • B若拿了3号叉子,不能再拿2号筷子,避免“A等B的叉子,B等A的筷子”的环路。
    • 现实问题
      • 有时需要先拿叉子再拿筷子(如吃西餐),但规则禁止,可能导致资源浪费(叉子闲置,却不能拿筷子)。

(三)为什么资源编号法很难用?

  • 场景示例:电脑资源包括键盘(1)、显示器(2)、U盘(3)、打印机(4),按编号规则,进程必须先请求键盘,再请求显示器,最后请求打印机。
    • 矛盾点:实际中可能需要先打开显示器(2)再插U盘(3),但按规则必须先插U盘(3),因为3>2,违背使用逻辑,导致进程无法正常启动。

三、知识点表格总结

策略目标条件核心方法优点缺点/局限性
破坏不可抢占不可抢占资源虚拟化资源并允许强制回收适用于可虚拟资源物理资源抢占可能导致数据混乱,非所有资源可虚拟化
破坏环路等待循环等待资源按升序编号,禁止降序请求理论上彻底消除环路编号规则可能违背实际使用逻辑,复杂系统难以实施
通用局限牺牲资源利用率或系统灵活性确保死锁不发生可能导致资源浪费、编程负担加重

写作不易,希望这篇总结能帮助大家全面理解死锁预防的四种策略!如果觉得有用,欢迎关注我的博客,点赞评论分享,一起探讨更多操作系统知识~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一杯年华@编程空间

原创文章不易,盼您慷慨鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值