第6章_进程管理与作业管理2分析.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章_进程管理与作业管理2分析

死锁概述 操作系统中的死锁基于如下假定: 任意一个进程要求资源的最大数量不超过系统能提供的最大量; 如果一个进程在执行中提出的资源要求能够得到满足,那么它一定能在有限时间内结束; 一个资源在任何时刻最多只为一个进程所占有; 一个进程申请资源,只在资源得不到满足时才处于等待状态; 一个进程结束时释放它所占有的全部资源; 系统具有有限个进程和资源。 死锁 在多道程序系统中,若干个进程彼此相互等待对方拥有且不会释放的资源,从而形成各进程都想得到资源而又都得不到资源,因而不能继续向前推进的僵局状态,就叫死锁。 例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); 资源的概念 资源的分类 a、可再用资源/消耗性资源 可再用资源:可供进程重复使用 如:硬件资源、软件资源 消耗性资源:由某个进程所产生,只为另一个进程使用一次,或经短暂时间后便不再使用的资源。 如:时钟中断、同步信号、消息等 b、共享/独享资源:例如CPU、主存/打印机 c、可剥夺/不可剥夺资源 产生死锁的必要条件 互斥:对于独占资源,每个资源每次只能给一个进程使用,进程申请到了资源后占为己有,则排斥其他进程享受该资源 非剥夺:正在使用的资源不可剥夺,进程获得的资源尚未使用完毕之前,只能由占有者自己释放,不能被其他进程强行占用 占有且等待:进程因未分配到新的资源而受阻,但对已占有的资源又“死抱住不放” 循环等待:存在进程的循环等待链,前一进程占有的资源是后一进程所需求的资源,结果就形成了循环等待的僵持局面 说明:发生死锁,则四个条件一定同时成立;破坏其中一个,死锁就可以阻止。 资源分配图 约定Pi→Rj为请求边,表示进程Pi申请资源类Rj中的一个资源得不到满足而处于等待Rj类资源的状态,该有向边从进程开始指到方框的边缘,表示进程Pi申请Rj类中的一个资源。 Rj→Pi为分配边,表示Rj类中的一个资源已被进程Pi占用,由于已把一个具体的资源分给了进程Pi,故该有向边从方框内的某个圆点出发指向进程。 资源分配图的一个例子 资源分配图的另一个例子 资源分配图死锁状态 (1)如果进程-资源分配图中无环路,则此时系统没有发生死锁。 (2)如果进程-资源分配图中有环路,且每个资源类中仅有一个资源,则系统中发生了死锁,此时,环路是系统发生死锁的充要条件,环路中的进程便为死锁进程。 (3)如果进程-资源分配图中有环路,且涉及的资源类中有多个资源,则环路的存在只是产生死锁的必要条件而不是充分条件。 处理死锁的基本方法 死锁的预防 死锁的避免 死锁的检测 死锁的解除(*) 死锁的预防 死锁预防策略是试图设计一种系统,在这样的系统中排除发生死锁的可能性。 可以把死锁预防方法看作两类 间接的死锁预防方法:即防止前三个必要条件中任何一个的发生 直接的死锁预防方法:即防止循环等待的发生 死锁的预防(1) 破坏互斥条件 使资源可同时访问而不是互斥使用,是个简单的办法,磁盘可用这种办法管理,但有许多资源往往是不能同时访问,所以这种做法许多场合行不通。 所以一般来说,4个条件中的互斥条件不可能禁止。 如果访问资源要求互斥,操作系统必须支持。某些资源,如文件,可能允许多个读访问,但只允许互斥的写访问。即使在这种情况下,如果有多个进程要求写权限,也可能发生死锁。 死锁的预防(2) 剥夺式分配 采用剥夺式调度方法可破坏第二个条件,但只适用于对主存资源和处理器资源的分配; 如果占有某些资源的一个进程,其进一步的资源请求被拒绝,则该进程必须释放它最初的资源; 如果一个进程请求当前被另一个进程占有的一个资源,操作系统可以剥夺第二个进程,要求它释放资源; 只有当应用于资源的状态可以很容易地保存并在以后恢复的情况下 (像处理器一样) ,这种方法才是实用的 死锁的预防(3) 按序分配 采用资源顺序使用法,破坏环路条件; 循环等待条件可以通过定义资源类型线性顺序来预防。如果一个进程已经分配到了R类型资源,它接下来请求的资源只能是那些排在R类型之

文档评论(0)

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

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

1亿VIP精品文档

相关文档