- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章 死锁与饥饿 Changes David Bowie I still dont know what I was waiting for And my time was running wild A million dead-end streets Every time I thought Id got it made It seemed the taste was not so sweet …… 死锁的产生 例1 进程推进顺序不当产生死锁 设系统有打印机、读卡机各一台,被进程P和Q共享。两个进程并发执行,按下列次序请求和释放资源: 进程P 进程Q 请求读卡机 请求打印机 请求打印机 请求读卡机 释放读卡机 释放读卡机 释放打印机 释放打印机 例2 PV操作使用不当产生死锁 进程Q1 进程Q2 P(S1); P(S2); P(S2); P(S1); 使用r1和r2; 使用r1和r2; V(S1); V(S2); V(S2); V(S1); 5.1 死锁的概念 死锁:是指并发进程彼此互相等待对方占有的资源,而这些进程在得到对方占有的资源之前又不会释放自己占有资源,从而造成进程永远无法执行的状态。 死锁不仅会给系统造成资源的浪费,甚至导致整个系统崩溃,因此我们分析一下造成死锁的因素。 5.3 死锁的条件 1)资源独占。任何资源在任何时刻只能分配给一个进程。 2)不可剥夺。资源申请者不能强行地从资源占有者手中夺取资源,即资源只能由其占有者在使用完后自愿地释放。 3)保持申请。进程在占有的部分资源后,而且在申请新资源的时候并不释放它已经占有的资源。 4)循环等待。发生死锁时,系统中必存在一进程循环等待链即前一进程占有着后一进程所要求的资源。 5.4 死锁的处理 当且仅当上述四个条件同时满足时,死锁才会发生。换言之,只要破坏上述四个条件的任意一个,死锁就不会发生。 解决死锁的方法一般可分为预防、避免、检测和恢复。 5.6 死锁的预防 死锁的预防就是预先防止死锁的发生,那么只要破坏死锁产生的四个必要条件中任何一条就可以预防死锁的产生。 1、破坏资源独占 使资源可同时访问而不是互斥使用,是个简单的办法,磁盘可用这种办法管理,但有许多资源往往是不能同时访问,所以这种做法许多场合行不通(如打印机)。 5.6 死锁的预防 2、破坏保持申请 采用剥夺式调度方法可破坏第三个条件,但只适用于对主存资源和处理器资源的分配,当进程在申请资源未获准许的情况下,如主动释放资源(一种剥夺式),然后去等待,以后再一起向系统提出申请,也能防止死锁。 3、破坏不可剥夺或循环等待 种种死锁防止办法施加于资源的限制条件太严格,会造成资源利用率和吞吐率低。两种比较实用的死锁防止方法,它们能破坏第二个条件或第四个条件。 5.6 死锁的预防 为达到此目的,可以采用预先分配策略和有序资源分配策略两种方式: 预先分配策略 进程在运行前一次性地向系统申请它所需要的全部资源,系统能满足则一次性地将所请求的全部资源分配给申请进程;若系统当前不能满足进程的全部资源请求,则不分配资源此进程暂不投入运行。 5.6 死锁的预防 缺点: 1、资源利用率低。因为进程在运行前申请并占有了它所需的全部资源,而有些资源有可能仅在运行结束之前才使用,这样这些资源有可能会空闲很长时间但却不能被其他进程使用。 2、由于条件结构的存在,进程运行时并不知道应该选哪一个分支,则会出现进程在运行前并不真正知道此次运行所需要的全部资源,若把所有分支的资源全部申请会造成资源的更大的浪费,因为有些资源有可能根本就不用。 3、有可能发生饥饿,例如一个进程如果需要多个常用资源有可能会一直得不到所需的全部资源而永久等待。 5.6 死锁的预防 有序资源分配策略 将每个资源类按一定原则编号,进程对资源的申请应严格按照资源编号由小到大的次序来进行,即当进程不占有任何资源时它可以申请任意资源类Ri中的任何多个资源,但此后它申请另外一个资源类Rj中的若干资源的充要条件是:f(Ri)f(Rj);(f是资源类序号)若进程需要同一资源类中的若干个资源,这些有可能应用在进程的各个地方,但它必须在一个申请命令中同时发出请求。 5.6 死锁的预防 优点: 与预先分配策略相比有序资源分配策略在一定程度上提高了资源的利用率。 缺点: 1、给资源一个合理的排号比较困难; 2、按号申请资源增加了资源使用者(进程)的负担; 3、如果有进程违反了按号申请得规定,则仍可能发生死锁; 4、为
文档评论(0)