银行家算法可用

银行家算法可用

ID:38465247

大小:28.50 KB

页数:4页

时间:2019-06-13

银行家算法可用_第1页
银行家算法可用_第2页
银行家算法可用_第3页
银行家算法可用_第4页
资源描述:

《银行家算法可用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、#include#include#include#definetrue1//定义ture=1#definefalse0//定义false=0intAvailable[10];//可使用资源向量intMax[10][10];//最大需求矩阵intAllocation[10][10]={0};//分配矩阵intNeed[10][10]={0};//需求矩阵intWork[10];//工作向量intFinish[10];//状态标志intRequest[10][10];//进程申请资源向量intPause[10]

2、;intList[10];inti,j;intn;//系统资源总数intm;//总的进程数inta;//当前申请的进程号intl,e;//计数器intb=0,c=0,f=0,g;//计数器voidenter()//输入部分{printf("请输入系统总共有的资源数:");scanf("%d",&n);printf("请输入总共有多少个进程:");scanf("%d",&m);for(i=1;i<=n;i++){printf("第%d类资源有的资源实例:",i);scanf("%d",&Available[i]);}for(i=1;i<=m;i++){for(j=

3、1;j<=n;j++){printf("进程P[%d]对第%d类资源的最大需求量:",i,j);scanf("%d",&Max[i][j]);Need[i][j]=Max[i][j];}}}voidrequest()//进程提出新申请{printf("请输入申请资源的进程:");scanf("%d",&a);for(i=1;i<=n;i++){printf("请输入进程P[%d]对%d类资源的申请量:",a,i);scanf("%d",&Request[a][i]);if(Request[a][i]>Need[a][i])printf("出错!进程申请的资源

4、数多于它自己申报的最大量");if(Request[a][i]>Available[i])printf("P[%d]必须等待",a);//以下是试探性分配Available[i]=Available[i]-Request[a][i];Allocation[a][i]=Allocation[a][i]+Request[a][i];Need[a][i]=Need[a][i]-Request[a][i];Work[i]=Available[i];}for(i=1;i<=m;i++){Pause[i]=Available[i];//Pause[i]只是一个暂

5、时寄存的中间变量,为防止在下面//安全性检查时修改到Available[i]而代替的一维数组Finish[i]=false;}for(g=1;g<=m;g++){for(i=1;i<=m;i++){b=0;//计数器初始化for(j=1;j<=n;j++){if(Need[i][j]<=Pause[j]){b=b+1;}if(Finish[i]==false&&b==n){for(l=1;l<=n;l++){Pause[l]=Pause[l]+Allocation[i][l];}Finish[i]=true;printf("$$%d",i);//依次输出进程安全

6、序列之一中每个元素}}}}printf("");for(i=1;i<=m;i++){if(Finish[i]==true)f=f+1;//统计Finish[i]==true的个数}if(f==m){printf("safestatic");f=0;//将计数器f重新初始化,为下一次提出新的进程申请做准备}else{printf("unsafestatic");//以下代码为当系统被判定为不安全状态时//返回提出申请前的状态for(i=1;i<=n;i++){Available[i]=Available[i]+Request[a][i];Allocation[

7、a][i]=Allocation[a][i]-Request[a][i];Need[a][i]=Need[a][i]+Request[a][i];}}}voidprint(){printf("当前的系统状态");printf("目前占有量最大需求量尚需要量进程");for(i=1;i<=n;i++)for(j=1;j<=n;j++){printf("%d类",j);}for(i=1;i<=m;i++){printf("P[%d]",i);for(j=1;j<=n;j++){printf("%d",Allocation[i][j]);}for(j=1;

8、j<=n;j++){pr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。