- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.5 死锁的基本概念 一、死锁 二、产生死锁的原因 三、产生死锁的必要条件 四、处理死锁的基本方法 死锁引出 进程控制不但要控制进程之间的同步和互斥,确保进程之间正常通信,还要解决进程死锁问题. 一旦出现进程死锁,相应的进程将无法向前推进.如果系统内绝大多数或者全部进程死锁,将造成系统瘫痪,或者”死机”. 3.5 死锁的基本概念 例:设有一台输入机和一台输出机,进程P1和P2需要使用这两个资源。设两个进程的活动分别为: 一、死锁 指多个进程在运行过程中因争夺资源,推进顺序不当或进程通信而造成的一种僵局(deadly-Embrace),若无外力作用,这些进程都将无法向前推进。 如图 二、产生死锁的原因 竞争资源 ?竞争非剥夺性资源 三、产生死锁的必要条件 产生死锁必须具备以下四个条件,这四个条件是Coffman首先提出的,所以称为Coffman 条件: 互斥条件(资源独占条件) 请求和保持条件(部分分配条件) 不剥夺条件 循环等待条件(环路条件) 四、处理死锁的基本方法 鸵鸟算法:指像鸵鸟一样对死锁视而不见,即不理睬死锁。 预防死锁:指通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或几个条件,来防止死锁的发生。 避免死锁:指在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免死锁的发生。 检测死锁:允许系统在运行过程中发生死锁,但可设置检测机构及时检测死锁的发生,并采取适当措施加以清除。 解除死锁:当检测出死锁后,便采取适当措施将进程从死锁状态中解脱出来。 3.6 死锁的预防和避免方法 死锁的避免 安全状态:如果系统能按某种顺序(如P4,P1,…,Pn, 称为安全序列)为每个进程分配其所需的资源,直至每个进程都能顺利地完成,称系统处于安全状态。若不存在这样一个安全序列称系统处于不安全状态。 安全状态一定是没有死锁发生的。 安全、不安全、死锁状态空间 安全状态实例 假定系统中有三个进程P1,P2和P3,共有12台磁带机,三个进程对磁带机的需求和占有如下: 三、避免死锁的算法-银行家算法 银行家算法的例子 假定系统中有5个进程3类资源及数量分别为10、5、7,T0时刻的资源分配情况。 (2) P1请求资源 Request1(1,0,2)执行银行家算法 (4) P0请求资源 Request0(0,2,0) 3.7 死锁的检测和解除 一、资源分配图 检测死锁的基本思想: 是在操作系统中保存资源的请求和分配信息,利用某种算法对这些信息加以检查,以判断是否存在死锁。为此,将进程和资源间的申请和分配关系描述成一个有向图---资源分配图。 一、资源分配图 资源分配图又称进程-资源图,它描述了进程和资源间的申请和分配关系,该图是一个有向图 一、资源分配图 进程结点子集 P = {P1,P2,P3} 资源结点子集 R = {R1,R2,R3,R4} N=P ? R ={P1,P2,P3}?{R1,R2,R3,R4} ={P1,P2,P3,R1,R2,R3,R4} E={(R2,P1),(R2,P2),(P1,R1),(R1,P2),(P2,R3),(R3,P3)} 资源分配图的化简 二、死锁检测算法 基本思想 获得某时刻t系统中各类可利用资源的数目向量w(t),对于系统中的一组进程{ p1,p2, …,pn},找出那些对各类资源请求数目均小于系统现有的各类可利用资源数目的进程。这样的进程可以获得它们所需要的全部资源并运行结束,当它们运行结束后释放所占有的全部资源,从而可使资源数目增加,将这样的进程加入到可运行结束的进程序列L中,然后对剩下的进程再作上述考查。如果一组进程{ p1,p2, …,pn}中有几个进程不属于序列L中,那么它们会发生死锁。 二、死锁检测算法 检测算法** 1.让Work和Finish作为长度为m和n的向量 (a) Work := Available (b) For i = 1,2, …, n, if Allocationi ? 0, then Finish[i] := false;otherwise, Finish[i] := true. 2.找到下标i (a) Finish[i] = false (b) Requesti ? Work 如果没有这样的i存在,转4 3.Work := Work + Allocationi Finish[i] := true go to step 2. 4.If Finish[i] = false, for some i, 1 ? i ? n, then the system is in deadlock st
您可能关注的文档
- Chapt23 形式语言.ppt
- Cha11 项目指导——常用广告艺术文字特效OK.ppt
- Chap5-控制系统的稳定性分析.ppt
- Chapter 2 Diseases associated with disfuction al cell proliferation and apoptosis.ppt
- Chapter 2 – 经典加密技术.ppt
- chapter 2 热力学第二定律新.pptx
- Chapter 3-2(A) The second Law of thermodynamics(part 2).ppt
- chapter 6——利润.ppt
- chapter-6-Sense-Relations.ppt
- chapter 2 进程的描述与控制.ppt
文档评论(0)