9.3 死锁检测与解除

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

资源分配图

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

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

死锁定理

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

简化方法如下:

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

死锁的解除

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

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

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

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

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、竞态条件: 定义:竞态条件指的是一种特殊的情况,在这种情况下各个执行单元以一种没有逻辑的顺序执行动作,从而导致...
    Hughman阅读 1,478评论 0赞 7
  • 资源问题 在系统中有许多不同类型的资源,其中可以引起死锁的主要是,需要采用互补访问方式的、不可以被抢占的资源,即临...
    NoFacePeace阅读 1,164评论 0赞 0
  • 处理机调度与死锁 处理机调度的层次 高级调度/作业调度/长程调度 作用:将外存后备队列中的作业调入内存 对象:作业...
    颜洛滨阅读 944评论 0赞 1
  • 临走之前,父母说:“这次去学校,要不给你同学带点特产?” 人嘛,都是希望图个方便,一想到要带很多东西,我心里就...
    叶千寻阅读 596评论 0赞 2
  • 自古以来,哪里有压迫哪里就有反抗,哪里有反抗哪里就有改变。几日后,婴田获得再一次的胜利,苏哲阳默许她收养了一只幼崽...
    菀彼青青阅读 949评论 1赞 5

友情链接更多精彩内容