操作系统7-死锁的检测和解除

7 死锁的检测和解除

7.1 死锁检测
  • 允许死锁发生,操作系统不断监视系统进展情况,判断死锁是否发生
  • 一旦死锁发生则采取专门的措施,解除死锁并以最小的代价恢复操作系统运行
7.1.1 检测时机
  • 定时检测
  • 当进程阻塞时检测死锁(其缺点是系统的开销大)
  • 系统资源利用率下降时检测死锁
7.1.2 检测方法(资源分配图法)
  • 二元组G=<V,E>

    • V:结点集,分为P,R两部分
      P={p1,p2,…,pn}
      R={r1,r2,…,rm}

    • E:边的集合,其元素为有序二元组<pi,rj> 或 <rj,pi>

实例图
图片叙述

  • 系统由若干类资源构成
  • 一类资源称为一个资源类
  • 每个资源类包含若干个同种资源,称为资源实例
  • 结点的表示法:

    • 资源类(资源的不同类型) 用方框表示
    • 资源实例(存在于每个资源类中) ,用方框中的黑圆点(圈)表示
      资源
    • 进程 用圆圈中加进程名表示
      进程
  • 边集中各边的含义:

    • 分配边 资源实例–>进程 的一条有向边 <rj,pi>
    • 申请边 进程–>资源类 的一条有向边 <pi,rj>

死锁定理:

  • 如果资源分配图中没有环路,则系统中没有死锁,如果图中存在环路则系统中可能存在死锁。
  • 如果每个资源类中只包含一个资源实例,则环路是死锁存在的充分必要条件。

资源分配图化简

  • 找一个非孤立、只有分配边的进程结点,去掉分配边,将其变为孤立结点;
  • 再把相应的资源分配给一个等待该资源的进程,即将某进程的申请边变为分配边;
  • 重复以上步骤,若所有进程都可成为孤立结点,称该图是可完全简化的,否则称该图是不可完全简化的。
    死锁状态的充分条件是:资源分配图是不可完全简化的

图例:
有环有死锁
有环有死锁

有环无死锁
有环无死锁

7.2 死锁的解除

重要的是以最小的代价解除死锁,恢复系统运行。方法如下:

  • 撤消所有的死锁进程
  • 连续撤消死锁进程直至不再存在死锁
  • 连续剥夺资源直到不再存在死锁
  • 把每个死锁进程备份到前面定义的某个检查点,并重新启动所有进程
  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值