银行家算法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;
}
SugarHosts 糖果主机商我们算是比较熟悉的,早年学会建站的时候开始就用的糖果虚拟主机,目前他们家还算是为数不多提供虚拟主机的商家,有提供香港、美国、德国等虚拟主机机房。香港机房CN2速度比较快,美国机房有提供优化线路和普通线路适合外贸业务。德国欧洲机房适合欧洲业务的虚拟主机。糖果主机商一般是不会发布黑五活动的,他们在圣圣诞节促销活动是有的,我们看到糖果主机商发布的圣诞节促销虚拟主机低至6折...
在刚才更新Vultr 新年福利文章的时候突然想到前几天有网友问到自己有在Vultr 注册账户的时候无法用支付宝付款的问题,当时有帮助他给予解决,这里正好顺带一并介绍整理出来。毕竟对于来说,虽然使用的服务器不多,但是至少是见过世面的,大大小小商家的一些特性特征还是比较清楚的。在这篇文章中,和大家分享如果我们有在Vultr新注册账户或者充值购买云服务器的时候,不支持支付宝付款的原因。毕竟我们是知道的,...
搬瓦工在国内非常流行的主机商,以提供低价的vps著称.不过近几年价格逐渐攀升.不过稳定性和速度一向不错.依然深受国内vps爱好者喜爱.新上线的套餐经常卖到断货.支持支付宝,paypal很方便购买和使用.官网网站:https://www.bandwagonhost.com[不能直接访问,已墙]https://www.bwh88.net[有些地区不能直接访问]https://www.bwh81.net...
银行家算法c为你推荐
sql四舍五入SQL中如何以0.5为单位进行四舍五入计算sql四舍五入sql怎样四舍五入保留小数点后1位windowsmedia为什么打开所有程序都出现Windows Media PlayerscriptmanagerScriptManager是什么pps官网pps软件下载中心 pps影视软件下载listviewitem安卓如何添加Listview的item?无处不在的意思心无所住是什么意思云输入法QQ云输入法的候选窗口是什么样的?yui3求Yui的详细资料怎样删除聊天记录怎么批量清除微信聊天记录
winhost windows主机 密码泄露 商家促销 hdd 服务器监测 linux使用教程 smtp虚拟服务器 免费的asp空间 ebay注册 什么是web服务器 独立主机 广东主机托管 腾讯云平台 windowsserver2008r2 建站行业 一句话木马 qq空间打开慢 长沙服务器托管 web服务器安全配置 更多