- 1、本文档共80页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.银行家算法 设Request i是进程Pi的请求向量。当P i发出资源请求后,系统按下述步骤进行检查: (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) 系统执行安全性算法,检查此次资源分配后系统是否处于安全状态。 (1) 如果Request i[j]≤Need[i,j],转向步骤(2);否则认为出错。 (2) 如果Requesti[j]≤Available[j],转向步骤(3);否则,Pi须等待。 3.7.2 利用银行家算法避免死锁 3.安全性算法 3.7.2 利用银行家算法避免死锁 (2)从进程集合中找到一个能满足下述条件的进程: ① Finish[i]=false;② Need[i,j]≤Work[j]; 若找到,执行步骤(3) 否则,执行步骤(4)。 (1)设置两个向量:①工作向量Work,Work=Available; ②Finish,它表示系统是否有足够的资源分配给进程,使之运行完成。 (3)当进程Pi获得资源,可顺利执行,直至完成,并释放出分配给它 的资源,故应执行:Work[j]=Work[j]+Allocation[i,j]; Finish[i]=true; go to step 2; (4)如果所有进程的Finish[i]=true都满足,则表示系统处于安全状态; 否则,系统处于不安全状态。 4.银行家算法之例 假定系统中有五个进程{P0,P1,P2,P3,P4}和三类资源{A,B,C},各资源的数量分别为10、5、7,在T0时刻的资源分配情况如图。 3.7.2 利用银行家算法避免死锁 图3-15 T0时刻的资源分配表 (1) T0时刻的安全性:利用安全性算法对T0时刻的资源分配情况进行分析可知,在T0时刻存在着一个安全序列{P1,P3,P4,P2,P0},故系统是安全的。 图3-16 T0时刻的安全序列 4.银行家算法之例 ④ 再利用安全性算法检查此时系统是否安全。如图3-17所示。 图3-17 P1申请资源时的安全性检查 4.银行家算法之例 (3)?P4请求资源:P4发出请求向量Request4(3,3,0),系统按银行家算法进行检查: ① Request4(3,3,0)≤Need4(4,3,1); ② Request4(3,3,0)≤Available(2,3,0),让P4等待。 (4)?P0请求资源:P0发出请求向量Requst0(0,2,0),系统按银行家算法进行检查: ① Request0(0,2,0)≤Need0(7,4,3); ② Request0(0,2,0)≤Available(2,3,0); ③系统暂时先假定可为P0分配资源,并修改有关数据,如图3-18所示。 4.银行家算法之例 图3-18 为P0分配资源后的有关资源数据 (5)进行安全性检查:可用资源Available(2,1,0)已不能满足任何进程的需要,故系统进入不安全状态,此时系统不分配资源。 思考:如果在银行家算法中,把P0发出的请求向量改为Request0(0,1,0),系统是否能将资源分配给它? 4.银行家算法之例 3.8 死锁的检测与解除 3.8.1 死锁的检测 当系统为进程分配资源时,若未采取任何限制性措施,则系统必须提供检测和解除死锁的手段: (1) 保存有关资源的请求和分配信息; (2) 提供一种算法,以利用这些信息来检测系统是否已进入死锁状态。 1.资源分配图(Resource Allocation Graph) 系统死锁可利用资源分配图来描述。该图描述进程和资源间申请和分配关系的一个有向图,是由一组结点N和一组边E所组成。 (1)N分为进程和资源,N=P∪R,圆圈代表一个进程节点,方框代表一个资源节点; (2)E分成分配边和请求边。e={pi,rj}是资源请求边,由进程pi指向资源rj,它表示进程pi请求一个单位的rj资源。e={rj,pi}是资源分配边,由资源rj指向进程pi,它表示把一个单位的资源rj分配给进程pi。 3.8.1 死锁的检测 1.资源分配图(Resource Allocation Graph) 圆圈代表一个进程,用方框代表一类资源; 方框中的一个点代表一类资源中的一个资源。 E={(p1,r2),(r2,p2),(p2,r1),(
文档评论(0)