操作系统讲义第三章题库.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 第二章 进程管理 * 3.5 产生死锁的原因和必要条件 竞争资源:多个进程共享资源,资源数目不足所引起进程对资源的竞争; 可剥夺资源和非剥夺性资源 竞争非剥夺性资源 竞争临时性资源 1. 产生死锁的原因 死锁(Deadlock):是指多个进程在运行过程中因争夺资源而造成的一种僵局(DeadlyEmbrace),当进程出现这种僵持状态时,若无外力作用,它们将无法再向前推进。 * 第二章 进程管理 * 3.5 产生死锁的原因和必要条件 1. 产生死锁的原因 进程推进顺序非法:请求和释放资源顺序不当。 1)进程推进顺序合法 2)进程推进顺序非法 P1:Request(R1); Request(R2); P1:Release(R1); Release(R2); P2:Request(R1); Request(R2); P2:Release(R1); Release(R2); P1:Request(R1); P2:Request(R2); P1:Request(R2); P2:Request(R1); P1 P2 R1 R2 * 第二章 进程管理 * 3.5 产生死锁的原因和必要条件 (1) 互斥条件,一段时间内某资源只能由一个进程占用; (2) 请求和保持条件,部分分配资源; (3) 不剥夺条件,进程已获得资源不能被剥夺,直至使用完毕; (4) 环路等待条件,发生死锁时必然存在进程-资源的环形链。 2. 产生死锁的必要条件 (1)预防死锁:通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或者几个,预防死锁的发生; (2)避免死锁:在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁; (3)检测死锁:通过系统所设置的检测机制,及时地检测出死锁的发生,并精确地确定与死锁有关的进程和资源; (4)解除死锁:与死锁检测配合,通过撤销和挂起一些进程,以便回收一些资源,再将这些资源分配给处于阻塞状态的进程,使之就绪,以继续运行。 3. 处理死锁的基本方法 * 第二章 进程管理 * 3.6 预防死锁的方法 (1) 摒弃“请求和保持”条件,要么全部分配,要么一个也不分配; (2) 摒弃“不剥夺”条件,资源在进程运行过程中可被暂时释放; (3) 摒弃“环路等待”条件,进程对资源的请求按照某种顺序依次进行。 1. 预防死锁 安全状态 是指系统能按某种进程顺序(P1,P2,… ,Pn),来为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都顺利执行。 安全状态实例:假设系统中有三个进程P1,P2,P3,共12台磁带机。 2. 系统安全状态 进程 最大需求 已分配 可用 P1 10 5 3 P2 4 2 P3 9 2 * 第二章 进程管理 * 3.6 预防死锁的方法 数据结构 3. 银行家算法 (1)可利用资源向量Available(m个元素的数组),其中Available[j] = k,表示系统中 Rj 类资源有 k 个。 (2)最大需求矩阵Max(n×m)的矩阵,Max[i,j]=k,表示进程Pi需要Rj类资源的最大数目是k个。 (3)分配矩阵Allocation( n×m)的矩阵, Allocation[i,j]=k,表示Pi已经分得Rj类资源的数目是k个。 (4)需求矩阵Need ( n×m)的矩阵, Need[i,j]=k,表示Pi还需要Rj类资源的数目是k个。 上述关系: Need[i,j]= Max[i,j] - Allocation[i,j]; * 第二章 进程管理 * 3.6 预防死锁的方法 算法描述 3. 银行家算法 假设Request i 是Pi的请求向量,Request i [j]=k表示Pi请求k个Rj类资源,Pi申请后,系统进行检查: (1)如果Request i [j] ≤ Need [i,j] ,则转(2),否则出错(需要资源超过它宣布的最大值)。 (2)如果Request i [j] ≤ Available [j] ,则转(3),否则尚无足够的资源,Pi必须等待。 (3)系统为Pi分配资源(试探性的分配): Available[j]:=Available[j] - Request i [j] ; Allocation[i,j]:=Allocation[i,j] + Request i [j]; Need[i,j]:=Need[i,j] - Request i [j]; (4)执行安全性算法,若安全则分配(为Pi),否则不分配,令Pi等待。 * 第二章 进程管理 * 3.6 预防死锁的方法 安全性算法

文档评论(0)

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

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

1亿VIP精品文档

相关文档