- 1、本文档共126页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统 第2部分_进程死锁及经典问题3__0409.ppt
安全性算法 (1)设置两个工作向量 设置一个数组Finish[n]。当Finish[i]=True(0 ≤ i ≤ n,n为系统中的进程数)时,表示进程Pi可以获得其所需的全部资源,而顺利执行完成。 设置一个临时向量Work,表示系统可提供给进程继续运行的资源的集合。安全性算法刚开始执行时,Work := Available 安全性算法 (2)从进程集合中找到一个满足下列条件的进程: Finish[i] = false; 并且 Need ≤ Work; 若找到满足该条件的进程,则执行步骤(3),否则执行步骤(4); (3) 当进程Pi获得资源后,将顺利执行直至完成,并释放其所拥有的全部资源,故应执行以下操作: Work := Work + Allocatoioni; 以及 Finish[i] := True;转向步骤(2); 安全性算法 (4) 如果所有进程的Finish[i] = True,则表示系统处于安全状态, 否则系统处于不安全状态。 举例 T0时刻的资源分配情况 假定系统中有四个进程P1,P2,P3,P4和三种类型的资源R1,R2,R3,每一种资源的数量分别为9、3、6,T0时刻的资源分配情况如表2.4所示: 进 程 资 源 Max Allocation ? Need Available R1 R2 R3 R1 R2 R3 R1 R2 R3 R1 R2 R3 P1 3 2 2 1 0 0 2 2 2 0 1 1 P2 6 1 3 6 1 2 0 0 1 P3 3 1 4 2 1 1 1 0 3 P4 4 2 2 0 0 2 4 2 0 T0时刻的安全性 利用安全性算法,分析T0时刻的资源分配情况,可得如表2.5所示的信息。 从T0时刻的安全性分析可知,T0时刻存在着一个安全序列P2,P1,P4,P3,故T0时刻系统是安全的。 进程 Work Need Allocation Work+Allocation Finish R1 R2 R3 R1 R2 R3 R1 R2 R3 R1 R2 R3 P2 0 1 1 0 0 1 6 1 2 6 2 3 true P1 6 2 3 2 2 2 1 0 0 7 2 3 true P4 7 2 3 4 2 0 0 0 2 7 2 5 True P3 7 2 5 1 0 3 2 1 1 9 3 6 True 假设T0时刻,进程P1申请资源,其请求向量为Request1(0,0,1),系统按银行家算法进行检查: Request1 (0,0,1) ≤ Need1(2,2,2),且 Request1 (0,0,1) ≤ Available (0,1,1) 故,系统试探性地为P1分配资源,并修改Available,Allocation1和Need1向量如表2.6所示。 ? 进程 Allocation Need Available R1 R2 R3 R1 R2 R3 R1 R2 R3 ? P1 1 0 1 2 2 1 0 1 0 ? P2 6 1 2 0 0 1 ? P3 2 1 1 1 0 3 ? P4 0 0 2 4 2 0 ? 利用安全性算法检查此时系统是否安全: 此时,系统的可用资源向量为Available(0,1,0),比较各进程的需求向量Need,系统不能满足任何进程的资源请求,系统进入不安全状态。 所以,P1请求的资源不能分配,只能让进程P1阻塞等待。 避免死锁不象预防死锁那样需要剥夺进程已获得的资源,或重新执行进程。而且,避免死锁比预防死锁施加的限制条件要弱得多 但它仍然有限制条件: a)??预先必须申明每个进程需要的资源总量; b)?进程之间相互独立,其执行顺序取决于系统安全,而非进程间的同步要求; c)??系统必须提供固定数量的资源供进程使用 d)若进程占有系统资源,则不能让其退出系统 检测并解除死锁 如果系统不愿意附加太多约束条件预防死锁,也不希望系统额外开销预测并避免死锁,那么,只能允许死锁出现,然后,再解除它。 因此,系统需要利用某种方法来检测死锁,下面给出了一种检测死锁的方法:简化资源分配图,如图2.51所示。 假设T0时刻,进程P4申请资源,其请求向量为Request4(1,2,0),系统按银行家算法进行检查: Request4 (1,2,0)
文档评论(0)