- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《操作系统》第三章 - 死 锁【荐】.ppt
第3章 死 锁 3.1 资 源 3.1.1 资源使用模式 1.申请 2.使用 3.释放 3.1.2 可剥夺资源与不可剥夺资源 1.可剥夺资源 另外进程可以从拥有它的进程那里把它剥夺过去为己所用,并且不会产生任何不良影响。例如,内存就是可剥夺资源。 2.不可剥夺资源 不能从当前占有它的进程那里强行抢占的资源,必须由拥有者自动释放,否则会引起相关计算的失效。 3.1.2 可剥夺资源与不可剥夺资源 死锁和不可剥夺资源有关 硬件资源 软件资源 可再用资源(SR) 消耗性资源(CR) 3.2 死 锁 概 念 3.2.1 什么是死锁 1.死锁示例 3.2.1 什么是死锁 在计算机系统中,涉及软件、硬件资源的进程都可能发生死锁。 生产者进程Producer: 消费者进程consumer: while(TRUE){ while(TRUE){ P(mutex); P(mutex); P(empty); P(full); … … } } 3.2.1 什么是死锁 2.死锁定义 所谓死锁,是指在一个进程集合中的每个进程都在等待仅由该集合中的另一个进程才能引发的事件而无限期地僵持下去的局面。 计算机系统产生死锁的根本原因就是资源有限且操作不当 3.2.1 什么是死锁 有两个进程A和B,竞争两个资源R和S,这两个资源都是不可剥夺资源。 进程A 进程B …… …… 申请并占用R 申请并占用S 申请并占用S 申请并占用R …… …… 释放R 释放S 释放S 释放R …… …… 3.2.1 什么是死锁 图3-2 进程推进顺序对引发死锁的影响 3.2.2 死锁的条件 当计算机系统同时具备下面4个必要条件时,会发生死锁。 1.互斥条件 2.占有且等待条件 3.不可抢占条件 4.循环等待条件 只要有一个必要条件不满足,则死锁就可以排除。 3.2.3 资源分配图 1.资源分配图的构成 该图由结对组成: G = (V, E)。式中,V是顶点的集合,E是边的集合。顶点集合可分为两部分:P={p1, p2, …, pn},它由系统中所有活动进程组成;R={r1, r2, …, rm},它由系统中全部资源类型组成。 有向边pi →rj称为申请边,而有向边rj →pi称为赋给边。 在资源分配图中,通常用圆圈表示每个进程,用方框表示每种资源类型。 3.2.3 资源分配图 2.资源分配图示例: 3.2.3 资源分配图 3.环路与死锁 ① 如果每类资源的实体都只有一个,那么图中出现环路就说明死锁了。 ② 如果每类资源的实体不止一个,那么资源分配图中出现环路并不表明一定出现死锁。 资源分配图中存在环路是死锁存在的必要条件,但不是充分条件。 3.2.3 资源分配图 如果资源分配图中没有环路,那么系统不会陷入死锁状态。如果存在环路,那么系统有可能出现死锁,但不确定。 3.2.4 处理死锁的方法 ① 利用某些协议预防或避免死锁,保证系统不会进入死锁状态。 ② 允许系统进入死锁状态,然后设法发现并克服它。 ③ 完全忽略这个问题,好像系统中从来也不会出现死锁。 3.3 死锁的预防 3.3.1 破坏互斥条件 3.3.2 破坏占有且等待条件 一种办法是预分资源策略 静态分配 另一种办法是“空手”申请资源策略 3.3.3 破坏非抢占条件 申请 资源 进程当前所占有的全部资源可被抢占 另一种方法是抢占等待者的资源 3.3.4 破坏循环等待条件 1。一种方法是实行资源有序分配策略 设R={r1, r2, …, rm},表示一组资
文档评论(0)