银行家算法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;
}
Spinservers是Majestic Hosting Solutions,LLC旗下站点,主营美国独立服务器租用和Hybrid Dedicated等,数据中心位于美国德克萨斯州达拉斯和加利福尼亚圣何塞机房。TheServerStore.com,自 1994 年以来,它是一家成熟的企业 IT 设备供应商,专门从事二手服务器和工作站业务,在德克萨斯州拥有 40,000 平方英尺的仓库,库存中始终有...
已经有一段时间没有分享阿里云服务商的促销活动,主要原因在于他们以前的促销都仅限新用户,而且我们大部分人都已经有过账户基本上促销活动和我们无缘。即便老用户可选新产品购买,也是比较配置较高的,所以就懒得分享。这不看到有阿里云金秋活动,有不错的促销活动可以允许产品新购。即便我们是老用户,但是比如你没有购买过他们轻量服务器,也是可以享受优惠活动的。这次轻量服务器在金秋活动中力度折扣比较大,2G5M配置年付...
hostslim美国独立日活动正在进行中,针对一款大硬盘荷兰专用服务器:双E5-2620v2/4x 1TB SATA硬盘,活动价60美元月。HostSlim荷兰服务器允许大人内容,不过只支持电汇、信用卡和比特币付款,商家支持7天内退款保证,有需要欧洲服务器的可以入手试试,记得注册的时候选择中国,这样不用交20%的税。hostslim怎么样?HostSlim是一家成立于2008年的荷兰托管服务器商,...
银行家算法c为你推荐
订房系统酒店管理系统包括哪些子系统ico监管新加坡代币ICO备案怎么做avc是什么格式XVID/MPEG/AVC都是什么意思啊pat是什么格式如何把JPG图片变为PAT格式图片?broadcast播播……拼音shoujiao求【叫兽】的简介动画分镜头脚本动画分镜头台本的作用?特斯拉model3降价特斯拉股价为何暴跌?爱码验证码平台接码验证码接收平台如何使用?erp系统教程ERP系统怎样操作,有教学视频吗?
如何申请域名 账号泄露 监控宝 英文站群 台湾谷歌网址 太原联通测速平台 dux 炎黄盛世 谁的qq空间最好看 什么是服务器托管 福建铁通 重庆双线服务器托管 免费cdn 厦门电信 下载速度测试 服务器防火墙 双线空间 网站加速 阿里云邮箱怎么注册 xshell5注册码 更多