9.3 死锁检测与解除

作者: saviochen | 来源:发表于2017-06-03 10:46 被阅读59次

当系统为进程分配资源时,若未采取任何限制性措施,则系统应该提供检测和解除死锁的手段。

资源分配图

系统死锁,可利用资源分配图来描述。如下图所示,用圆圈代表一个进程,用框代表一类资源。由于一种类型的资源可能有多个,用框中的一个点代表一类资源中的一个资源。从进程到资源的有向边叫请求边,表示该进程申请一个单位的该类资源;从资源到进程的边叫分配边,表示该类资源已经有一个资源被分配给了该进程。

上述资源分配图中,进程P1已经分得了两个R1资源,并又请求一个R2 资源;进程P2分得了一个R1和一个R2资源,并又请求一个R1资源。

死锁定理

可以通过将资源分配图简化的方法来检测系统状态S是否为死锁状态。S为死锁的条件(死锁定理)是当且仅当S状态的资源分配图是不可完全简化的。

简化方法如下:

  1. 在资源分配图中,找出既不阻塞又不是孤点的进程Pi,消去它所有的请求边和分配边,使之成为孤立的结点。(即找出存在有向边与之相连,且该有向边对应资源的申请数量小于等于系统中已有空闲资源数量。若所有的连接该进程的边均满足上述条件,则这个进程能继续运行直至完成,然后释放它所占有的所有资源)。在图(a)中,P1是满足这一条件的进程结点,将P1的所有边消去,便得到图(b)所示的情况。
  1. 进程Pi所释放的资源,可以唤醒某些因等待这些资源而阻塞的进程,原来的阻塞进程可能变为非阻塞进程。在上图中,进程P2就满足这样的条件。根据第1) 条中的方法进行一系列简化后,若能消去图中所有的边,则称该图是可完全简化的,如图(c)所示。

死锁的解除

一旦检测出死锁,就应立即釆取相应的措施,以解除死锁。死锁解除的主要方法有:

  1. 资源剥夺法。挂起某些死锁进程,并抢占它的资源,将这些资源分配给其他的死锁进程。但应防止被挂起的进程长时间得不到资源,而处于资源匮乏的状态。

  2. 撤销进程法。强制撤销部分、甚至全部死锁进程并剥夺这些进程的资源。撤销的原则可以按进程优先级和撤销进程代价的高低进行。

  3. 进程回退法。让一(多)个进程回退到足以回避死锁的地步,进程回退时自愿释放资源而不是被剥夺。要求系统保持进程的历史信息,设置还原点。

相关文章

  • 9.3 死锁检测与解除

    当系统为进程分配资源时,若未采取任何限制性措施,则系统应该提供检测和解除死锁的手段。 资源分配图 系统死锁,可利用...

  • 2019-11-07

    今天学习了死锁的检测与解除

  • iOS面试题-第十五页

    81. 死锁的处理 答:鸵鸟策略、预防策略、避免策略、检测与解除死锁 82. cocoa touch框架 答:iP...

  • 死锁

    死锁的4个必要条件互斥请求保持不可剥夺环路 死锁的处理鸵鸟策略预防策略避免策略检测与解除死锁 如有不当、错误之处,...

  • java多线程笔记

    产生死锁的四个必要条件 处理死锁的基本方法 死锁预防 死锁避免 死锁检测 死锁解除 https://blog.cs...

  • 操作系统笔记01——死锁

    目录 必要条件 处理方法鸵鸟策略死锁检测与死锁恢复1.每种类型一个资源的死锁检测2.每种类型多个资源的死锁检测3....

  • [现代操作系统]--死锁

    table of content 死锁定义 死锁建模-- 资源分配图 处理死锁鸵鸟算法检测并恢复死锁检测死锁恢复利...

  • 如何去检测死锁

    如何检测死锁 死锁预防 让线程获取锁的顺序一致 死锁检测 jps 查看java 进程信息 jstack +进程号 ...

  • cornerstone 解除死锁

    https://jingyan.baidu.com/article/5552ef47d4959c518ffbc9a...

  • jstack命令解析

    jstack用法 jstack查看输出 jstack统计线程数 jstack检测死锁 死锁代码 死锁日志 jsta...

网友评论

    本文标题:9.3 死锁检测与解除

    本文链接:https://www.haomeiwen.com/subject/whbpfxtx.html