网站大量收购闲置独家精品文档,联系QQ:2885784924

现代操作系统第3章死锁.ppt

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.5.2 产生死锁的必要条件 互斥:竞争的资源一次只能被一个进程使用。 请求和保持条件;当一个进程已经占有了一些资源,同时又要申请新的资源,若新资源申请失败,进程将占有资源且阻塞等待。 不剥夺条件(不可强占):一个资源仅能被占有它的进程所释放,而不能被别的进程强行强占 环路等待条件:若干个进程构成环行请求链,其中每个进程均占有若干种资源中的某一种,同时每个进程还要求(链上)下一进程所占有的资源. 以上前三个条件是死锁存在的必要条件,但不是充分条件。第四个条件是前三个条件同时存在时产生的结果。所以这些条件不是完全 独立的 3.5.2 产生死锁的必要条件 破坏第一个条件(互斥条件),使资源可同时访问而不是互斥使用,是简单的方法。磁盘可以用这种方法管理,但许多资源往往是不能同时访问的,这种做法许多场合行不通 3.5.2 产生死锁的必要条件 采用抢占式的调度方法可以破坏第三个条件(不剥夺条件),但剥夺调度方法目前只适用于对主存资源和处理器资源的分配。 比较实用的方法是破坏第二个条件或第四个条件 3.5.2 产生死锁的必要条件 静态分配策略(破坏占有和等待条件) 层次分配策略(阻止环路等待条件):一个进程得到某一层的一个资源后,它只能再申请在较高一层的资源。 3.5.3 处理死锁的基本方法 预防死锁(破坏4条件之一,缺点:低效)。 避免死锁(属于事先预防,在资源的动态分配过程中,用某种方法去防止系统进入不安全状态) 。 检测死锁( 不事先采取任何措施,也不必检查是否进入不安全区,而是允许系统在运行的 过程中发生死锁。但可以通过系统所设置的检测机构,实时检测出死锁的发生,并精确的确定与死锁有关的进程和资源;然后,采取适当措施从系统中将已经发生的死锁清除掉) 。 解除死锁(与检验死锁相配套的一套措施) 。 3.5.3 处理死锁的基本方法 1.预防死锁的方法 在系统设计时确定资源分配算法,保证不发生死锁。具体的做法是破坏产生死锁的四个必要条件之一 1)资源一次性分配;(破坏请求和保持条件) 2)可剥夺资源;即当某进程新的资源未满足时,释放已占有的资源(破坏不可剥夺条件) 3)资源有序分配法;做法:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反(破坏环路等待条件) 死锁避免 资源轨迹图 两个进程的资源轨迹图 * 确定是否安全状态 在P2完成之后 P2完成 P1完成 安全状态 不安全状态 假设这时P1申请一个R1和一个R3,状态还是安全吗?是否拒绝P1? 安全状态和不安全状态(1) 说明(a)中的状态为安全状态 * (a) (b) (c) (d) (e) 安全状态和不安全状态(2) 说明(b)中的状态为不安全状态 safe * (a) (b) (c) (d) 单个资源的银行家算法 三个资源分配状态 安全 安全 不安全 * (a) (b) (c) 多个资源的银行家算法 多个资源的银行家算法例子 * 银行家算法实例 假定系统中有五个进程{P0, P1, P2, P3, P4}和三类资源{A, B, C},各种资源的数量分别为10、5、7,在T0时刻的资源分配情况如图 3-15 所示。 T0时刻的安全性: (2) P1请求资源:P1发出请求向量Request1(1,0,2),系统按银行家算法进行检查: ① Request1(1, 0, 2)≤Need1(1, 2, 2) ② Request1(1, 0, 2)≤Available1(3, 3, 2) ③ 系统先假定可为P1分配资源,并修改Available, Allocation1和Need1向量,由此形成的资源变化情况如图 3-16 中的圆括号所示。 ④ 再利用安全性算法检查此时系统是否安全。 先看进程已拥有的资源数目以及还需要的资源数目,看系统可提供的资源数目是否满足该进程还需要的资源数目,若可以满足则将资源分配给该进程,该进程用完后释放,释放后系统重新

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档