银行家算法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;
}
DogYun(中文名称狗云)新上了一批韩国自动化上架独立服务器,使用月减200元优惠码后仅需每月300元,双E5 CPU,SSD+NVMe高性能硬盘,支持安装Linux或者Windows操作系统,下单自动化上架。这是一家成立于2019年的国人主机商,提供VPS和独立服务器租用等产品,数据中心包括中国香港、美国洛杉矶、日本、韩国、德国、荷兰等。下面分享这款自动化上架韩国独立服务器的配置和优惠码信息。...
商家介绍:创梦云是来自国内的主机销售商,成立于2018年4月30日,创梦云前期主要从事免备案虚拟主机产品销售,现在将提供5元挂机宝、特惠挂机宝、香港云服务器、美国云服务器、低价挂机宝等产品销售。主打高性价比高稳定性挂机宝、香港云服务器、美国云服务器、香港虚拟主机、美国虚拟主机。官方网站:http://cmy0.vnetdns.com本次促销产品:地区CPU内存硬盘带宽价格购买地址香港特价云服务器1...
819云是我们的老熟人了,服务器一直都是稳定为主,老板人也很好,这次给大家带来了新活动,十分给力 香港CN2 日本CN2 物理机 E5 16G 1T 20M 3IP 240元0官方网站:https://www.819yun.com/ 特惠专员Q:442379204套餐介绍套餐CPU内存硬盘带宽IP价格香港CN2 (特价)E5 随机分配16G1T 机械20M3IP240元/月日本CN2 (...
银行家算法c为你推荐
mergefield邮件合并日期,想让电子表格中的日期格式与WORD中的日期格式一致prisma安卓版kovo安卓版的哪有下载?oledbdatareaderDataReader和IDataReader的区别?怎么用电脑发短信怎样用电脑给别人的手机发短信?sdfsdfsdfsdf小米手机投诉热线sdfsdfsdfsdf世界上最大的一块金砖有多重?za是哪个国家的奥洛菲是哪个国家的backupexecBackup Exec 2014怎么备份Exchangepass是什么在英语里pass是什么意思flushes翻譯下面的日記
服务器租用托管 国外vps租用 VPS之家 cybermonday 鲨鱼机 一点优惠网 圣诞节促销 丹弗 警告本网站美国保护 linux空间 165邮箱 免费高速空间 中国网通测速 东莞服务器 免费mysql数据库 smtp虚拟服务器 下载速度测试 中国电信测速网站 中国联通宽带测试 netvigator 更多