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

ProfitServer折优惠西班牙vps,荷兰vps,德国vps,5折优惠,不限制流量

profitserver正在对德国vps(法兰克福)、西班牙vps(马德里)、荷兰vps(杜廷赫姆)这3处数据中心内的VPS进行5折优惠促销。所有VPS基于KVM虚拟,纯SSD阵列,自带一个IPv4,不限制流量,在后台支持自定义ISO文件,方便大家折腾!此外还有以下数据中心:俄罗斯(多机房)、捷克、保加利亚、立陶宛、新加坡、美国(洛杉矶、锡考克斯、迈阿密)、瑞士、波兰、乌克兰,VPS和前面的一样性...

SugarHosts糖果主机圣诞节促销 美国/香港虚拟主机低至6折

SugarHosts 糖果主机商我们算是比较熟悉的,早年学会建站的时候开始就用的糖果虚拟主机,目前他们家还算是为数不多提供虚拟主机的商家,有提供香港、美国、德国等虚拟主机机房。香港机房CN2速度比较快,美国机房有提供优化线路和普通线路适合外贸业务。德国欧洲机房适合欧洲业务的虚拟主机。糖果主机商一般是不会发布黑五活动的,他们在圣圣诞节促销活动是有的,我们看到糖果主机商发布的圣诞节促销虚拟主机低至6折...

DMIT:美国cn2 gia线路vps,高性能 AMD EPYC/不限流量(Premium Unmetered),$179.99/月起

DMIT怎么样?DMIT最近动作频繁,前几天刚刚上架了日本lite版VPS,正在酝酿上线日本高级网络VPS,又差不多在同一时间推出了美国cn2 gia线路不限流量的美国云服务器,不过价格太过昂贵。丐版只有30M带宽,月付179.99美元 !!目前,美国云服务器已经有个4个套餐,分别是,Premium(cn2 gia线路)、Lite(普通直连)、Premium Secure(带高防的cn2 gia线...

银行家算法c为你推荐
贸易配额国际贸易中什么是配额租prisma安卓版kovo安卓版的哪有下载?oledbdatareaderDataReader和IDataReader的区别?avc是什么格式电厂AVC啥意思?pat是什么格式怎么将自己做的PS图片保存为PAT格式?云输入法如何使用QQ云输入法?网络安全密钥网络安全密钥和wifi密码有什么区别东兴证券网站东兴证券开户是假的吗?gbk内码Gbk内码查询泛微协同办公系统泛微OA系统怎么创建新人员
台湾虚拟主机 星星海 arvixe 主机点评 gitcafe tightvnc 绍兴高防 qingyun 腾讯云分析 seednet 789电视 hinet 共享主机 卡巴斯基试用版 qq对话框 搜索引擎提交入口 怎么建立邮箱 国内域名 中国电信测速网站 双线空间 更多