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

RackNerd美国大硬盘服务器促销:120G SSD+192TB HDD,1Gbps大带宽,月付$599,促销美国月付$服务器促销带宽

racknerd怎么样?racknerd最近发布了一些便宜美国服务器促销,包括大硬盘服务器,提供120G SSD+192TB HDD,有AMD和Intel两个选择,默认32G内存,1Gbps带宽,每个月100TB流量,5个IP地址,月付$599。价格非常便宜,需要存储服务器的朋友可以关注一下。RackNerd主要经营美国圣何塞、洛杉矶、达拉斯、芝加哥、亚特兰大、新泽西机房基于KVM虚拟化的VPS、...

提速啦(69元起)香港大带宽CN2+BGP独享云服务器

香港大带宽服务器香港大带宽云服务器目前市场上可以选择的商家十分少,这次给大家推荐的是我们的老便宜提速啦的香港大带宽云服务器,默认通用BGP线路(即CN2+BGP)是由三网直连线路 中国电信骨干网以及HGC、NTT、PCCW等国际线路混合而成的高品质带宽(精品带宽)线路,可有效覆盖全球200多个国家和地区。(适用于绝大部分应用场景,适合国内外访客访问,域名无需备案)提速啦官网链接:点击进入香港Cer...

vdsina:俄罗斯VPS(datapro),6卢布/天,1G内存/1核(AMD EPYC 7742)/5gNVMe/10T流量

今天获得消息,vdsina上了AMD EPYC系列的VDS,性价比比较高,站长弄了一个,盲猜CPU是AMD EPYC 7B12(经过咨询,详细CPU型号是“EPYC 7742”)。vdsina,俄罗斯公司,2014年开始运作至今,在售卖多类型VPS和独立服务器,可供选择的有俄罗斯莫斯科datapro和荷兰Serverius数据中心。付款比较麻烦:信用卡、webmoney、比特币,不支持PayPal...

银行家算法c为你推荐
财务系统软件2020年有什么好用的财务软件?一起作业网站一起作业官网是什么?renderpartialYii中render和renderPartial的区别flash实例FLASH中实例是个什么概念,真心期待着!!!期待好心人,感恩!希望大家多讨论手机软件开发工具做安卓软件开发需要哪些工具?shoujiao手机板aoblox怎么从英文变成中文shoujiao如何区分是不是颈椎病?cursorlocation在ENVI中双击遥感图像出来个CURSOR LOCATION/value对话框。下面有个LL : 31?6'21.84"N, 117?9'11.78"E云办公平台什么叫云办公啊?谁能通俗的给我讲下腾讯合作伙伴大会腾讯的合作伙伴都有
域名大全 双线主机租用 国内vps 免费顶级域名 圣诞节促销 申请个人网页 ca4249 河南移动网 美国网站服务器 爱奇艺vip免费领取 国外ip加速器 闪讯官网 云营销系统 国外的代理服务器 贵阳电信测速 服务器论坛 wordpress中文主题 大化网 杭州电信宽带 windows2008 更多