[第6章死锁.pptVIP

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[第6章死锁

第6章 死锁 引言 6.1 死锁的基本概念 6.2 死锁预防 6.3 死锁避免 6.4 死锁检测 6.5 死锁解除 6.6 死锁的综合处理 引言 在多道程序系统中,可以利用多个进程的并发执行来改善系统的资源利用率,提高系统的吞吐能力,但也可能带来一种危险——死锁(Deadlock)。死锁是指多个并发进程在推进过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,都将无法继续向前推进的一种现象。死锁问题是Dijkstra于1965年研究银行家算法时首先提出,而后为Havender、Lynch等人分别于1968年、1971年相继认识和发展的。前面提到的利用信号量解决进程的同步问题时,若多个wait和signal操作不当时,就会产生进程的死锁。本章将讨论死锁产生的原因以及各种解决死锁的方法。 6.1死锁的基本概念 死锁是由于两个或两个以上的进程因竞争资源而处于无限期的等待的现象。系统发生死锁,将导致系统资源利用率下降。本节介绍死锁的基本概念,死锁产生的原因及死锁的必要条件。 6.1.1 死锁的定义 在系统中,两个或两个以上的进程无限期地等待永远不可能发生的事件,则称这些进程处于死锁状态。 6.1.2 死锁产生的原因 系统资源不足: 进程竞争资源图 6.1.2 死锁产生的原因 发生死锁的情形:如上图(a)所示,系统有资源R1、R2各一台,它们被进程P1、P2共享,两个并发进程按下列次序请求和释放资源: 6.1.2 死锁产生的原因 由于进程的执行具有异步性,所以P1、P2进程向前推进的相对速度无法预知。若出现上述资源使用情况时,进程P1占用了资源R2,进程P2占用了资源R1,此时系统已无可再分配资源,系统的运行进入了一种不安全状态。此后进程P1又请求资源R1,因资源R1被进程P2占用,P1进入阻塞状态。进程P2此时执行,请求资源R2,同样因资源R2被进程P1占用而阻塞,P1、P2进程都因得不到资源而陷入了死锁状态。 6.1.2 死锁产生的原因 不发生死锁的情形:如上图(b)所示,进程P1占用了资源R2,进程P2占用了资源R1,此时系统还有一个R1资源,此后P1在请求资源R1时,能够得到资源R1而不会进入阻塞状态,进程P1可以继续向前推进。进程P2此时向前推进,请求资源R2,因资源R2被进程P1占用而阻塞。但进程P1已得到了所需的全部资源,从而可以完成任务。进程P1完成任务后,会释放其所占用的资源,进程P2被唤醒,获得所需资源后,同样可以完成任务。系统没有进入死锁状态。 6.1.2 死锁产生的原因 由上面的分析可知,产生死锁的根本原因在于系统提供的资源个数少于并发进程所需的该类资源数,从而引起进程对资源的竞争而产生死锁。 系统中有m(m≥1)个进程,各需要使用同类资源k(k≥1)个,则保证系统不发生死锁的最少资源数为(k-1)m+1。因为资源分配的最坏情况是每个进程都分到了(k-1)个资源,这时如果资源耗尽,就会导致死锁。但系统如果再有一个资源,便可以帮助一个进程完成任务,该进程完成任务后释放其所占用的资源,其它进程就可以获得所需资源而完成任务。 6.1.2 死锁产生的原因 进程推进顺序不合理: 如前所述,当系统有资源R1、R2各一台,按照前述的顺序向前推进,会使进程P1、P2陷入死锁状态。但如果两个并发进程P1、P2按下表次序请求和释放资源,则不会导致死锁。 进程P1先后占用了资源R2、R1,已获得了全部所需资源。进程请求资源R1,因得不到资源R1而进入阻塞状态。进程P1释放R1,进程P2占用R1后向前推进,请求资源R2,因得不到资源R1而进入阻塞状态。此后进程P1释放R1,进程P2占用R2后向前推进,从而可以完成任务,没有发生死锁现象。 6.1.2 死锁产生的原因 6.1.2 死锁产生的原因 进程推进顺序对死锁的影响 6.1.2 死锁产生的原因 上图表明了进程推进顺序对死锁的影响。若进程按折线①、②所示的顺序推进,两进程可以顺利完成,我们称这种不会引起进程死锁的推进顺序是合理的。 但如果并发进程P1、P2按折线③所示的顺序推进,则它们将进入不安全区内。此时进程P1保持资源R2,进程P2保持资源R1,系统处于不安全状态。因为这时两进程若再向前推进,便可能发生死锁。例如,当进程运行到P1请求资源R1时,将因资源R1已被进程P2占用而阻塞;当进程P2运行到请求资源R2时,也将因

文档评论(0)

19840506 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档