c++银行家算法总结140001_第1页
c++银行家算法总结140001_第2页
c++银行家算法总结140001_第3页
c++银行家算法总结140001_第4页
c++银行家算法总结140001_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、算法的实现一、初始化由用户输入数据,分别对可利用资源向量矩阵AVAILABLE最大需求矩阵MAX分配矩阵 ALLOCATION需求矩阵 NEED赋值。二、银行家算法在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使 系统始终都处于安全状态,便可以避免发生死锁。银行家算法的基本思想是分配资源之前 , 判断系统是否是安全的 ; 若是,才分配。它是最具有代表性的避免死锁的算法。设进程 cusneed 提出请求 REQUEST i ,则银行家算法按如下规则进行判断。(1) 如果 REQUEST cusneed i= NEED

2、cusneedi ,则转(2) ;否则, 出错。(2) 如果 REQUEST cusneed i= AVAILABLEcusneedi ,则转(3) ; 否则,出错。(3) 系统试探分配资源,修改相关数据:AVAILABLEi-=REQUESTcusneedi;ALLOCATIONcusneedi+=REQUESTcusneedi;NEEDcus needi-二REQUESTcus needi;(4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废, 系统恢复原状,进程等待。三、安全性检查算法运行安全性检查算法如下:1)Work = Available ; Finish = fal

3、se2) 寻找满足如下条件的i:Finishi=false 并且 Needi Worki;如果不存在,则转步骤4 );Finishi = true3) Work = Work + Allocationi转步骤2 );4)如果对于所有i,Finishi = true,则系统处于安全状态,否则处于不安全状态(1) 设置两个工作向量 Work二AVAILABLE;FINISH(2) 从进程集合中找到一个满足下述条件的进程,FINISH=false;NEEDv二Work;如找到,执行;否则,执行(3)设进程获得资源,可顺利执行,直至完成,从而释放资源。Work+二ALLOCATION;Fini sh二

4、true;GOTO 2如所有的进程Finish二true ,则表示安全;否则系统不安全。各算法流程图#i ncludeusing n amespace std;#defi ne MAXPROCESS0/*最大进程数*/#defi ne MAXRESOURCE00/*最大资源数*/日列 ntAVAILABLEMAXRESOURCE;/*可用资源数组*/日国 i ntMAXMAXPROCESSMAXRESOURCE;/*最大需求矩阵*/*分配矩Eiii nt ALLOCATIONMAXPROCESSMAXRESOURCE;阵*/Mint NEEDMAXPROCESSMAXRESOURCE;/*需求

5、矩阵*/日国 i nt REQUESTMAXPROCESSMAXRESOURCE;/*进程需要资源数*/日国 bool FINISHMAXPROCESS;/*系统是否有足够的资源分配 */日国 int pMAXPROCESS;/*记录序列*/日国i nt m,n;/* m个进程,n个资源*/voidIn it();bool Safe();void Ba nk();int mai n()EE1IIni t();Safe();IBan k();Igetchar();I/给出系统拥有的每种资源数,已经分配给每个进程的资源数,还有每 个进程最多需要每种资源的个数,让你判断当前系统是不是安全的日国voi

6、dIni t()/*初始化算法*/日叫Iint i,j;Icout m;Icout n;Icout 请输入每个进程最多所需的各资源数,按照 m x n 矩阵输入 endl;for (i = 0 ;i m;i + )for (j = 0 ;j MAXij;Icout 请输入每个进程已分配的各资源数,也按照 m x n 矩阵输入 endl;for (i = 0 ;i m;i + )帥Ifor (j = 0 ;j ALLOCATIONij;|NEEDij = MAXij - ALLOCATIONij;Iif (NEEDij 0 )百申cout 您输入的第VV i +1 个进程所拥有的第VV j +

7、1 VV 个资源数错误,请重新输入 AVAILABLE;卜 日国voidBa nk()/*银行家算法*/日叫Iinti,cus need;charaga in;Iwhile ( 1 )韓Restart:Icout 请输入要申请资源的进程号(注:第1个进程号为0,依次类推) cus need;Icout 请输入进程所请求的各资源的数量en dl;for (i = 0 ;i REQUESTcus needi;卜 for (i = 0 ;i NEEDcusneedi)與cout 您输入的请求数超过进程的需求量!请重新输入! AVAILABLEi)無Icout 您输入的请求数超过系 统有的资源数!请重

8、新输入! endl;goto Restart;AVAILABLE-二 REQUESTcus needi;ALLOCATIONcus needi +二 REQUESTcus n eedi;INEEDcus needi-二 REQUESTcus needi;卜 Iif (Safe()韓cout 同意分配请求! endl;else與Icout 您的请求被拒绝! endl;for (i = 0 ;i n;i + )畀IAVAILABLE +二 REQUESTcus needi;IALLOCATIONcus needi-二 REQUESTcus needi;INEEDcus needi +二 REQUE

9、STcusn eedi;卜 卜 Ifor (i = 0 ;i m;i + )與IFINISHi = false ;卜Icout 您还想再次请求分配吗?是请按y/Y,否请按其它键 aga in;if (again 二二y | again 二二Y ) 無continue ;卜Ibreak ;卜日国 boolSafe()/*安全性算法*/日叫int i,j,k,l = 0 ;韓int WorkMAXRESOURC工作数组*/E;/*for (i = 0 ;i n;i + )IWorki = AVAILABLE;for (i = 0 ;i m;i + )韓IFINISHi = false ;卜 for

10、 (i = 0 ;i m;i + )韓if (FINISHi = true )無continue ;卜 Ielse朋Ifor (j = 0 ;j Workj)弄break ;卜 卜 if (j = n)弄韓/*I那么你就需要看每个进程还需要每种资源多少,把它计算出来,然后看你剩下的可分配的资源数是不是可以达到其中一个进程的要求,I如果可以,就分配给它,让这个进程执行,执行结束后,这个进程释放资源,重新计算系统的可分配的资源卜 */IFINISHi = true ;Ifor (k = 0 ;k n;k + )無IWorkk += ALLOCATIONik;卜Ipl + = i;i =- 1 ;卜

11、 else朋Icontinue ;卜 卜 if (l = m)韓cout 系统是安全的 endl;cout 安全序列: endl;for (i = 0 ;i l;i + )無cout pi;Iif (i != l - 1 )朋Icout 卜 卜 cout en dl;Ireturn true ;卜 卜Icout 系统是不安全的 endl;return false ;、银行算法是怎样避免死锁的:银行家算法是这样的:1 )当一个用户对资金的最大的需求量不超过银行家现有的资金时就 可以接纳该用户。2)用户可以分期贷款,但贷款的总数不能超过最大需求量。3)当银行家现有的资金不能满足用户的尚需贷款时,对用户的贷款 可推迟支付,但总能使用户在有限的时间里得到贷款。4)当用户得到所需的全部资金后,一定能在有限的时间里归还所有 资金。我们把操作系统看作是银行家,操作系统管理的资源相当于是银行家 管理的资金,则银行家算法就是:1)当一个进程首次申请资源时,测试该进程对资源的最大的需求量, 如果不超过系统现存资源时就可以按他的当前申请量为其分配资源。 否 则推迟分配。2)进程执行中继续申请资源时,测试该进程占用资源和本次申请资 源总数有没有超过最大需求量。超过就不分配,没超过则再测试现存资源 是否满足进程还需要的最大资源量,满足则按当前申请量分配,否则也推 迟分配。总之,银行家算法要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论