银行家算法c银行家算法的C语言程序

银行家算法c  时间:2022-02-23  阅读:()

银行家算法的C语言程序

#include <stdio.h> #define  n  5          //进程个数 #define  m  3            //资源种类 #define false 0 #define true 1 int Available[m]={2,3,3},Allocation[n+1][m]={0,0,0,2,1,2,4,0,2,3,0,5,2,0,4,3,1,4},Need[n+1][m]={0,0,0,3,4,7,1,3,4,0,0,3,2,2,1,1,1,0};//可利用资源向量Available 最大需求矩阵Max分配矩阵Allocation需求矩阵Need int Available1[m],Need1[n][m],Allocation1[n][m]; int h; int safede()                                                    //安全状态判别算法 {  int i,j,work[m],finish[n],tag=n;  for(i=0;i<m;i++)work[i]=Available1[i];  for(i=0;i<n;i++)finish[i]=0;     while(tag--)  {    for(i=0;i<n;i++)    {          if(finish[i]==0)    {     for(j=0;j<m;j++)if(Need1[h][j]<=work[j])continue;     if(j==m)     {      for(j=0;j<m;j++)     {      work[j]=work[j]+Allocation1[h][j];                     finish[j]=1;     }     }    }    }  }  for(i=0;i<n;i++)if(finish[i]==1)continue;  if(i==n)return 1;  else return 0; } int main() {      int i,j,request[m];      while(1)   { printf("输入进程类型: P = ");   scanf("%d",&h);   printf("输入请求资源向量: ");      for(i=0;i<m;i++)scanf("%d",&request[i]);   for(i=0;i<m;i++)  {         Available1[i]=Available[i];         Allocation1[h][i]=Allocation[h][i];         Need1[h][i]=Need[h][i];  }       for(i=0;i<m;i++)   {   if (!(request[i]<=Need[h][i]))   {             printf("非法请求!!! ");        break;                                    //非法请求,终止   }   }     if(i==m)  {   for(i=0;i<m;i++)   {             if (!(request[i]<=Available[i]))    {                 printf("P%d阻塞!!! ",h);     break;                            //进程阻塞,终止    }   }  }  if(i==m)  {          for(i=0;i<m;i++)                                      //试探性分配   {    Available1[i]=Available1[i] - request[i];             Allocation1[h][i]=Allocation1[h][i]+request[i];             Need1[h][i]=Need1[h][i]-request[i];   } if(safede()==0) printf("资源分配后系统不是处于安全状态! ");    //若新状态安全,则实际分配资源给Pi,否则取消试探性分配    else   {     printf("资源分配成功! ");    for(i=0;i<m;i++)    {     Available[i]=Available1[i];     Allocation[h][i]=Allocation1[h][i];     Need[h][i]=Need1[h][i];    }   }  }   printf("可利用资源: ");   for(i=0;i<m;i++)printf("%d ",Available[i]);   printf(" 分配资源: ");   for(i=1;i<=n;i++)   {    for(j=0;j<m;j++)     printf("%d ",Allocation[i][j]);    printf(" ");   }   printf("需求矩阵: ");      for(i=1;i<=n;i++)   {    for(j=0;j<m;j++)     printf("%d ",Need[i][j]);    printf(" ");   }   printf("请求结束! ");         printf(" ");   }   return 0; }

腾讯云2核4GB内存8M带宽 年74元

一般大厂都是通过首年才有可以享受爆款活动,然后吸引我们注册他们商家达到持续续费和购买的目的。一般只有大厂才能有这样的魄力和能力首年亏本,但是对于一般的公司和个人厂家确实难过,这几年确实看到不少的同类商家难以生存。这里我们可以看到有对应的套餐方案。不过这两个套餐都是100%CPU独享的,不是有某云商家限制CPU的。但是轻量服务器有个不好的就是带宽是较大且流量是限制的额,分别是1GB和1.2TB月流量...

青云互联-洛杉矶CN2弹性云限时五折,9.5元/月起,三网CN2gia回程,可选Windows,可自定义配置

官方网站:点击访问青云互联官网优惠码:五折优惠码:5LHbEhaS (一次性五折,可月付、季付、半年付、年付)活动方案:的套餐分为大带宽限流和小带宽不限流两种套餐,全部为KVM虚拟架构,而且配置都可以弹性设置1、洛杉矶cera机房三网回程cn2gia 洛杉矶cera机房                ...

VoLLcloud6折限量,香港CMI云服务器三网直连-200M带宽

vollcloud LLC首次推出6折促销,本次促销福利主要感恩与回馈广大用户对于我们的信任与支持,我们将继续稳步前行,为广大用户们提供更好的产品和服务,另外,本次促销码共限制使用30个,个人不限购,用完活动结束,同时所有vps产品支持3日内无条件退款和提供免费试用。需要了解更多产品可前往官网查看!vollcloud优惠码:VoLLcloud终生6折促销码:Y5C0V7R0YW商品名称CPU内存S...

银行家算法c为你推荐
小明发布首页永久网站2015小明发布看看永久域在哪里能找到免费的刷ip流量免费刷流量软件有哪些?哪个免费刷流量工具最好?webservice框架java Webservice都有哪几种方式啊,哪种方式比较好啊微信如何只发文字微信朋友圈如何只发文字,怎么发文字不要图java程序员招聘java工程师待遇如何特斯拉model3降价小鹏P7和特斯拉Model 3,买哪个更加划算?acceptchangesaltium designer 6.0如何给元件重新编号微盟价格虚拟币的价格由什么决定网页背景音乐代码网站背景音乐HTML代码元宝汇传奇续章开了几个区?
我的世界服务器租用 vps安全设置 漂亮qq空间 韩国俄罗斯 diahosting 私服服务器 名片模板psd 日志分析软件 国内php空间 域名接入 美国在线代理服务器 河南移动m值兑换 metalink web服务器安全 上海电信测速网站 云营销系统 下载速度测试 net空间 电信网络测速器 买空间网 更多