操作系统第11讲new.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十一讲死锁本次课程主要内容产生死锁的原因和必要条件产生死锁的原因产生死锁的必要条件处理死锁的基本方法预防死锁的方法系统安全状态利用银行家算法避免死锁死锁的检测与解除死锁的产生:若进程P1和P2按下述次序交替执行wait操作: process P1: wait(R1mutex); process P2: wait(R2mutex); process P1: wait(R2mutex); process P2: wait(R1mutex);进程P1…进程P2…打印机R1磁带机R2wait(R1mutex); wait(R2mutex);wait(R2mutex); wait(R1mutex);进程P1和P2处于僵持状态。在无外力作用下,两者都将无法从僵持状态中解脱出来。此时的进程A和B已进入死锁状态。3.5 产生死锁的原因和必要条件 3.5.1 产生死锁的原因 产生死锁的原因可归结为如下两点: (1) 竞争资源。当系统中供多个进程共享的资源如打印机、公用队列等,其数目不足以满足诸进程的需要时,引起诸进程对资源的竞争而产生死锁。 (2) 进程间推进顺序非法。进程在运行过程中,请求和释放资源的顺序不当,也同样会导致产生进程死锁。可剥夺性资源:进程在获得这类资源后,该资源可以再被其他进程或系统剥夺。如:处理机、内存。非剥夺性资源:系统把这类资源分配给某进程后,再不能强行收回,只能在进程用完后自行释放,如磁带机、打印机。3.5.2 产生死锁的必要条件 (1) 互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求该资源,则请求者只能等待,直至占有该资源的进程用毕释放。 (2) 请求和保持条件:指进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。 (3) 不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。 (4) 环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,…,Pn}中的P0正在等待一个P1占用的资源; P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。 图中S1、S2和S3是临时性资源。进程P1产生消息S1,又要求从P3接收消息S3;进程P3产生消息S3,又要求从进程P2接收其所产生的消息S2;进程P2产生消息S2,又需要接收进程P1所产生的消息S1。如果消息通信按下述顺序进行:P1: …Release(S1); Request(S3); …P2: …Release(S2); Request(S1); …P3: …Release(S3); Request(S2); … 并不可能发生死锁,但若改成下述的运行顺序: P1: …Request(S3); Release(S1); … P2: …Request(S1); Release(S2); … P3: …Request(S2); Release(S3); …则可能发生死锁。 3.5.3 处理死锁的基本方法 (1) 预防死锁。这是一种较简单和直观的事先预防的方法。该方法是通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或几个条件,来预防发生死锁。预防死锁是一种较易实现的方法,已被广泛使用。思考:具体措施可以有哪些?预防死锁的方法有什么弊端? (2) 避免死锁。该方法同样是属于事先预防的策略,但它并不须事先采取各种限制措施去破坏产生死锁的四个必要条件,而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。这种方法只需事先施加较弱的限制条件,便可获得较高的资源利用率及系统吞吐量。目前在较完善的系统中常用此方法来避免发生死锁。思考:避免死锁的方法有什么弊端? (3) 检测死锁。这种方法并不须事先采取任何限制性措施,也不必检查系统是否已经进入不安全区,而是允许系统在运行过程中发生死锁。但可通过系统所设置的检测机构,及时地检测出死锁的发生,并精确地确定与死锁有关的进程和资源; 然后,采取适当措施,从系统中将已发生的死锁清除掉。 (4) 解除死锁。这是与检测死锁相配套的一种措施。当检测到系统中已发生死锁时,须将进程从死锁状态中解脱出来。常用的实施方法是撤消或挂起一些进程,以便回收一些资源,再将这些资源分配给已处于阻塞状态的进程,使之转为就绪状态,以继续运行。死锁的检测和解除措施有可能使系统获得较好的资源利用率和吞吐量,但在实现上难度也最大。思考:检测和解除死锁的方法有什么弊端?3.6 预防死锁的方法 3.6.1 预防死锁 1.摒弃“请求和保持”条件 在采用这种方法时,系统规定所有进程在开始运行之前,都必须一次性地申请其在整个运

文档评论(0)

此项为空 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档