银行家算法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; }

云雀云(larkyun)低至368元/月,广州移动1Gbps带宽VDS(带100G防御),常州联通1Gbps带宽VDS

云雀云(larkyun)当前主要运作国内线路的机器,最大提供1Gbps服务器,有云服务器(VDS)、也有独立服务器,对接国内、国外的效果都是相当靠谱的。此外,还有台湾hinet线路的动态云服务器和静态云服务器。当前,larkyun对广州移动二期正在搞优惠促销!官方网站:https://larkyun.top付款方式:支付宝、微信、USDT广移二期开售8折折扣码:56NZVE0YZN (试用于常州联...

咖啡主机22元/月起,美国洛杉矶弹性轻量云主机仅13元/月起,高防云20G防御仅18元/月

咖啡主机怎么样?咖啡主机是一家国人主机销售商,成立于2016年8月,之前云服务器网已经多次分享过他家的云服务器产品了,商家主要销售香港、洛杉矶等地的VPS产品,Cera机房 三网直连去程 回程CUVIP优化 本产品并非原生地区本土IP,线路方面都有CN2直连国内,机器比较稳定。咖啡主机目前推出美国洛杉矶弹性轻量云主机仅13元/月起,高防云20G防御仅18元/月;香港弹性云服务器,香港HKBN CN...

Gcore(gcorelabs)俄罗斯海参崴VPS简单测试

有一段时间没有分享Gcore(gcorelabs)的信息了,这是一家成立于2011年的国外主机商,总部位于卢森堡,主要提供VPS主机和独立服务器租用等,数据中心包括俄罗斯、美国、日本、韩国、新加坡、荷兰、中国(香港)等多个国家和地区的十几个机房,商家针对不同系列的产品分为不同管理系统,比如VPS(Hosting)、Cloud等都是独立的用户中心体系,部落分享的主要是商家的Hosting(Virtu...

银行家算法c为你推荐
存储区域网络网络存储技术的SAN(存储区域网络)的优点爱短信官网官方飞信,ET飞信,爱短信飞信插件哪个好用??pps官网pps官方下载,pps播放器下载java程序员招聘女java程序员好找工作嘛全局钩子delphi 键盘全局钩子方正证券官方网方正证券完美版下载云办公平台Gleasy云办公平台解决了哪些问题?防火墙技术应用在网络支付流程中,防火墙技术与数据加密技术应用则重点有什么不同?erp系统教程如何使用ERP系统操作?erp系统教程ERP系统怎样操作,有教学视频吗?
虚拟主机试用30天 域名备案流程 免费域名跳转 openv directadmin gg广告 中国智能物流骨干网 福建天翼加速 老左来了 135邮箱 泉州移动 网通服务器托管 爱奇艺vip免费领取 万网主机管理 成都主机托管 广东主机托管 攻击服务器 小夜博客 重庆联通服务器托管 privatetracker 更多