- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
现代操作系统 第3章 死锁 死锁例子: 一个由于申请不同类型资源而产生死锁的例子 设系统有一台打印机(R1)一台扫描仪(R2),两进程共享这两台设备。 用信号量S1表示R1是否可用,用信号量S2表示R2是否可用, S1、 S2初值为1。 死锁例子: 所谓死锁,是指多个进程因竞争资源而造成的一种僵局(永久阻塞状态),若无外力作用,这些进程都将不能再向前推进。 关于死锁的一些结论 参与死锁的进程最少是两个 参与死锁的进程至少有两个已经占有资源 参与死锁的所有进程都在等待资源 注:如果死锁发生,会浪费大量系统资源,甚至导致系统崩溃。 3. 1 死锁概述 总的来说,死锁和不可抢占资源有关,有关可抢占资源的死锁通常可以通过在进程之间重新分配资源而化解。我们讨论的重点放在不可抢占资源。 概念引入 资源分配图 用来描述系统资源及资源的申请和分配情况的有向图。定义为:二元组G=(V,E)其中: V:结点集,分为P(进程集合),R(资源集合)两部分。即 P={p1,p2,…,pn} ;R={r1,r2,…,rm}。 E:边的集合,其元素为有序二元组(pi,rj) 或(rj,pi) 。 资源分配图 资源请求边:e={ pi, rj } 进程?资源的一条有向边 表示进程pi申请rj类资源中的一个资源。 资源分配边:e={ rj, pi } 资源?进程的一条有向边 表示rj类中的一个资源已被进程pi占用。 资源分配图 表示法 资源类(资源的不同类型):用方框表示 资源实例(存在于每个资源中) :用方框中的小圆圈表示 进程:用大圆圈中加进程名表示 资源分配图 【思考题】 一个OS有20个进程,竞争使用65个同类资源,申请方式是逐个进行的,一旦某个进程获得它所需要的全部资源运行完毕后,就立即归还所有资源。每个进程最多使用三个资源。若仅考虑这类资源,该系统有无可能产生死锁,为什么? 3. 产生死锁的必要条件 四个必要条件: 互斥条件:涉及的资源是非共享的。 请求和保持条件:进程在等待一新资源时继续占有已分配的资源。 不剥夺条件:不能强行剥夺进程拥有的资源。 环路等待条件:存在一种进程的循环等待链,链中的每一个进程在已获得资源的同时等待着链中的下一个进程所占有的资源。 以上四个条件须同时具备。 4. 处理死锁的基本方法 忽略该问题。 测试死锁并恢复。让死锁发生,检测,一旦检测到,采取行动解决问题。 仔细对资源进行分配,动态避免死锁。 通过破坏四个死锁条件之一 ,防止死锁的产生。 3.2 鸵鸟算法 驼鸟算法:象鸵鸟一样对死锁视而不见 数学家认为不管花多大代价也要彻底防止死锁的发生 工程师们则要了解死锁发生的频率、系统因其他原因崩溃的频率、以及死锁有多严重后,才会采取相关策略 3.2 鸵鸟算法 假设一个Unix系统的进程表有100项,有10个进程在执行,每一个都要创造12个子进程。在每个进程创建9个子进程后,进程表项被全部用完;则这10个进程将进入死锁。发生这类事件的概率是很小的,但它的确存在!我们需要为消除这种状况就放弃进程、fork这些概念和方法吗? 3.3 死锁检测和死锁恢复 允许死锁发生,操作系统不断监视系统进展情况,判断死锁是否发生。 一旦死锁发生则采取专门的措施,解除死锁并以最小的代价恢复操作系统运行。 3.3 死锁检测和死锁恢复 当系统为进程分配资源时,若未采取任何限制性措施,则系统必须提供检测和解除死锁的手段,为此,系统必须: (1)保存有关资源的请求和分配信息; (2)提供一种算法,以利用这些信息来检测系统是否进入死锁状态。 3.3.1 每种类型一个资源的死锁检测 死锁检测算法 每个进程和资源指定唯一编号 设置一张资源分配图: 记录各进程与其占用资源之间的关系 利用算法检测资源分配图是否存在环路 死锁检测算法 对图中每一节点N,将N作为起始节点执行以下5个步骤。 将L初始化为空表,并清除所有的有向边标记。 将当前节点添加到L的尾部,并检测该节点是否在L中已出现过两次。若是,那么该图包含了一个环,算法结束。 从给定结点出发,检测是否存在没有标记的从该节点出发的弧。若有,执行第5步;若无,跳至第6步。 死锁检测算法 随机选取一条没有标记的从该节点出发的弧(有向边),标记它。然后顺着这根弧找到新的当前节点,返回到第3步。 移走该节点,返回到前一个节点。返回第3步。 3.3.1 每种类型一个资源的死锁检测 问题的提出 是否资源分配图中存在环就一定有死锁? 如果资源分配图中没有环路,则系统中没有死锁,如果图中存在环路则系统中可能存在死锁。 如果每个资源类中只包含一个资源实例,则环路是死锁存在的充分必要条件。 3.3.2 每种类型多个资源的死
您可能关注的文档
- Computer Simulation from Electron Beam Lithography to Optica
- Laser Beam Weld Bonding of AA5754 for Automobile Structures.
- PLANNED X-RAY IMAGING OF THE ELECTRON BEAM AT THE SPRING-8 D
- STUDY OF CONTROL GRID THERMIONIC CATHODE RF GUN.pdf
- Linux课件:GDB调试简明指南.pdf
- 《计算机网络》课后题答案.doc
- 2010系统结构课件 第1章 导论.ppt
- 2010系统结构课件 第2章 流水线.ppt
- 2010系统结构课件 第3章 存储系统.ppt
- 2010系统结构课件 第4章互连网络.ppt
文档评论(0)