银行家算法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;
}
妮妮云的来历妮妮云是 789 陈总 张总 三方共同投资建立的网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑妮妮云的市场定位妮妮云主要代理市场稳定速度的云服务器产品,避免新手购买云服务器的时候众多商家不知道如何选择,妮妮云就帮你选择好了产品,无需承担购买风险,不用担心出现被跑路 被诈骗的情况。妮妮云的售后保证妮妮云退款 通过于合作商的友好协商,云服务器提供2天内全额退款到网站余额,超过2天...
六一云 成立于2018年,归属于西安六一网络科技有限公司,是一家国内正规持有IDC ISP CDN IRCS电信经营许可证书的老牌商家。大陆持证公司受大陆各部门监管不好用支持退款退现,再也不怕被割韭菜了!主要业务有:国内高防云,美国高防云,美国cera大带宽,香港CTG,香港沙田CN2,海外站群服务,物理机,宿母鸡等,另外也诚招代理欢迎咨询。官网www.61cloud.net最新直销劲爆...
修罗云怎么样?修罗云是一家国内老牌商家,修罗云商家以销售NAT机器起家,国内的中转机相当不错,给的带宽都非常高,此前推荐的也都是国内NAT VPS机器。今天,云服务器网(www.yuntue.com)小编主要介绍一下修罗云的香港云服务器,适合建站,香港沙田cn2云服务器,2核2G,5M带宽仅70元/月起,同时香港香港大带宽NAT VPS低至50元/月起,性价比不错,可以尝试一下!点击进入:修罗云官...
银行家算法c为你推荐
离线包百度地图离线包如何下载?郭列90后的杰出代表有那些?excel大写金额在EXCEL表格里怎样自动生成金额大写excel大写金额怎么在excel中设置大写金额webservice框架什么是webservice,什么情况下使用,如何使用selectintoACCESS中提示“不允许在select into语句中使用多值字段”sms是什么短信验证是什么?particular教程AE的particular的particle设置validdate怎样解决oracle报错is not a valid date and time网页背景音乐代码有没有网页背景音乐播放器代码??
上海服务器租用 香港服务器租用99idc 网站备案域名查询 日本软银 踢楼 hawkhost优惠码 博客主机 免费ftp空间 Hello图床 华为云主机 彩虹ip 绍兴高防 坐公交投2700元 国外代理服务器软件 电信主机 免费mysql数据库 iki 万网空间 服务器硬件配置 七牛云存储 更多