资源描述:
《《银行家算法》word版》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、银行家算法一、需求分析1)判断当前状态是否安全,如果安全给出安全序列;如果不安全给出理由。2)对于下一个时刻T1,某个进程Pk会提出请求Request(R1,…,Rm),判断分配给Pk进程请求的资源之后系统是否安全。3)输入:进程个数n,资源种类m,T0时刻各个进程的资源分配情况(可以运行输入,也可以在程序中设置);4)输出:如果安全,输出安全的进程序列,不安全则提示信息。二、概要设计1)抽象数据类型的定义/课本/P110intAvailable[MaxNumber_line]={3,3,2};//剩下的intMax
2、[MaxNumber][MaxNumber_line]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};//最大需求intAllocation[MaxNumber][MaxNumber_line]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};//现在占用的intNeed[MaxNumber][MaxNumber_line]={{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}};//需要的intRequest[Ma
3、xNumber_line]={0,0,0};intSafeOrder[MaxNumber];intN=5,M=3,number_finish=0;2)主程序的流程1.判断当前程序是否安全,若安全,收回已完成程序的资源并转向第2步2.输入进程Pi及该进程的资源请求数3.判断是否满足Request[I,j]<=Need[I,j],若不满足则转向第2步4.判断是否满足Request[I,j]<=Available[j],若不满足则转向第2步5.将资源分配给Pi6.重复上述1——5步骤直至给所以进程都分配完资源三、详细设计#
4、includeusingnamespacestd;constintMaxNumber=5;constintMaxNumber_line=3;boolsafeTest(intN,intM,intAllocation[MaxNumber][MaxNumber_line],intNeed[MaxNumber][MaxNumber_line],intAvailable[MaxNumber_line],intSafeOrder[MaxNumber],int&number_finish);voidshow(i
5、ntN,intM,intMax[MaxNumber][MaxNumber_line],intAllocation[MaxNumber][MaxNumber_line],intNeed[MaxNumber][MaxNumber_line],intAvailable[MaxNumber_line],intSafeOrder[MaxNumber]);boolfill_need(intn,intm,intNeed[MaxNumber][MaxNumber_line]);voidmain(void){//P110intAvai
6、lable[MaxNumber_line]={3,3,2};//剩下的intMax[MaxNumber][MaxNumber_line]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};//最大需求intAllocation[MaxNumber][MaxNumber_line]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};//现在占用的intNeed[MaxNumber][MaxNumber_line]={{7,4,3},{1,2,2},{6
7、,0,0},{0,1,1},{4,3,1}};//需要的intRequest[MaxNumber_line]={0,0,0};intSafeOrder[MaxNumber];intN=5,M=3,number_finish=0;intnum=0;while(fill_need(N,M,Need)==false){if(safeTest(N,M,Allocation,Need,Available,SafeOrder,number_finish)==false){cout<<"该系统处于不安全状态!!!";break
8、;}else{cout<<"该系统处于安全状态!!!";show(N,M,Max,Allocation,Need,Available,SafeOrder);cout<<"提示输入的进程序号:"<