1、=Work+AllocatioHj;Finish i |:=true;实验内容:请使用银行家算法来避免死锁的产生 程序代码:(供参考)#i nclude #i ncludevstri ng.h#in clude#defi ne False 0 #defi ne True 1int Max100100=0;各进程所需各类资源的最大需求 int Avaliable1OO=O; 系统可用资源char name100=0; 资源的名称int Allocation 100100=0; 系统已分配资源int Need100100=0; 还需要资源int Request100=0; 请求资源向量int te
2、mp100=0;存放安全序列int Work100=0;存放系统可提供资源int M=100;作业的最大数为100int N=100;资源的最大数为100void showdata()显示资源矩阵int i,j;cout系统目前可用的资源Avaliable:endl;for(i=0;iN;i+)cout n amei;e ndl;for (j=0;jj+)Avaliablej / 输出分配资源Need Max Allocationcoutvv进程名 for(j=0;3;j+)coutv ”;M;i+)vvivvMax曲coutvvAllocationijNeedijvvcoutvve ndl;
3、int changdata(int i)/ 进行资源分配int j;j+) Avaliablej二Avaliablej-Requestj;Allocati on ij=Allocatio n ij+Requestj;Needij=Needij-Requestj;return 1;int safe()安全性算法int i,k=O,m,apply,Fi nish100=0;int flag=0;Work0=Avaliable0;Work1=Avaliable1;Work2=Avaliable2;apply=0;if (Fi ni shi=False&N eedij=Workj) apply+;if
4、(apply=N)for(m=0;mm+)Fini shi=True;tempk=i;i=-1;k+;flag+;if(Fi ni shi=False)系统不安全不成功系统不安全return -1;系统是安全的!如果安全,输出成功分配的序列:;i+)输出运行进程数组tempi;if(iM-1) coutreturn 0;void share()利用银行家算法对申请资源对进行判定char ch;int i=0,j=0;ch=y请输入要求分配的资源进程号(0-vvM-1vv):cini;输入须申请的资源号请输入进程 申请的资源:n amejNeedij)判断申请是否大于需求,错进程申请的资源大于它
5、需要的资源 ch= nbreak;else Avaliablej)判断申请是否大于当前资源,若大于则 /出错申请的资源大于系统现在可利用的资源分配出错,不予分配! n:if(ch=) changdata(i);/根据进程需求量变换资源showdata();根据进程需求量显示变换后的资源safe();/根据进程需求量进行银行家算法判断void addresources()/ 添加资源int n, flag;n;flag二N;N=N+n;for(int i=0;名称:n ameflag;数量: Avaliableflag+;void delresources() 删除资源char ming;int
6、 i,flag=1;请输入需要删除的资源名称:doming;if(mi ng=n amei)flag=0;if(i=N)该资源名称不存在,请重新输入:”while(flag);for(i nt j=i;N-1;n amej二n amej+1;Avaliablej=Avaliablej+1;N=N-1;void cha ngeresources() 修改资源函数vvAvaliable0Avaliable1Avaliable2;经修改后的系统可用资源为for (int k=0;kMaxflagi;Needflagi=Maxflagi-Allocatio nflagi;int main() 主函数i
7、nt i,j, nu mber,choice, m,n, flag;*请首先输入系统可供资源种类的数量 cinN=n; n;资源i+1m;vvnvv 矩M=m;请输入各进程的最大需求量(vvmvv阵)Max:vve ndl;ivm;j vn ;flag=O;请输入各进程已经申请的资源量(*vvnMaxij)flag=1;Needij=Maxij-Allocatio n ij;if(flag)申请的资源大于最大需求量,请重新输入!n显示各种资源用银行家算法判定系统是否安全while(choice)* 银 行 家 算 法 演 示*增加资源删除资源修改资源4:分配资源5:增加作业0:离开*end|;请选择功能号:choice;switch(choice)case 1: addresources();case 2: delresources();case 3: cha ngeresources();