• 大小: 228KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: C/C++
  • 标签:

资源简介

银行家算法,在vc++环境下运行,可实现

资源截图

代码片段和文件信息

#include  

#define FALSE 0 
#define TRUE 1
#define W 10//最大进程数  
#define R 10//最大资源种类数

int temp[10];
//static int xl=0;
int M ; // 输入总进程数
int N ; // 输入资源种类
int ALL_RESOURCE[R]; // 各种资源的数目总和
int Max[W][R]; // 最大需求矩阵,M个进程对N类资源最大资源需求
int Available[R]; // 可利用资源向量,
int Allocation[W][R];// 分配矩阵,各个进程M已经得到N类资源的资源数
int Need[W][R]; // M个进程还需要N类资源的资源量
int Request[R]; // 进程的请求资源个数

void show(); //显示当前各进程的分配和需求信息
void fenpei(int k); //分配资源
void huishou(int k) ; //上一个进程结束释放所得资源后,系统重新获得的可利用资源huishou
int safe(); //安全性算法
void bank(); // 银行家算法

//主函数
void main(){ 
int i=0j=0p; 
printf(“-------------------- 银 行 家 算 法 模 拟 实 现 ------------------\n\n“);
printf(“请输入进程数:“);
scanf(“%d“&M);
//printf(“-----------------------------------------------------------------\n“); 
printf(“请输入资源种类:“);
scanf(“%d“&N);
//printf(“-----------------------------------------------------------------\n“); 
printf(“请输入%d个各类资源总数:“N);
for(i=0;i scanf(“%d“&ALL_RESOURCE[i]);
printf(“-----------------------------------------------------------------\n“);  
printf(“请输入%d个各进程所需要的各类资源的最大数量:\n“M*N);
for (i=0;i for (j=0;j do{
scanf(“%d“&Max[i][j]);
if (Max[i][j]>ALL_RESOURCE[j])         
printf(“占有资源超过了声明的该资源总数请重新输入\n“); 
} while (Max[i][j]>ALL_RESOURCE[j]);
}
}
printf(“-----------------------------------------------------------------\n“);  
printf(“请输入%d个各进程已经分配的各类资源的数量:\n“M*N); //各进程已经分配的各类资源的数量
for (i=0;i for (j=0;j do{
scanf(“%d“&Allocation[i][j]);
if (Allocation[i][j]>Max[i][j])
printf(“已分配的资源超过了声明的最大资源请重新输入\n“); 
}while (Allocation[i][j]>Max[i][j]);
}
}
// 初始化资源数量
for (j=0;j p=ALL_RESOURCE[j];
for (i=0;i p=p-Allocation[i][j];// 减去已经被占据的资源
Available[j]=p;
if(Available[j]<0)
Available[j]=0;
}
}
for (i=0;i for(j=0;j Need[i][j]=Max[i][j]-Allocation[i][j];//三个矩阵之间存在的关系
show();
bank();
}

//显示当前各进程的分配和需求信息
void show(){ 
int ij;
printf(“-----------------------------------------------------------------\n“); 
printf(“各种资源的总数量:\n“); //各种资源的总数量
for (j=0;j printf(“ %d“ALL_RESOURCE[j]); 
printf(“\n“);
printf(“-----------------------------------------------------------------\n“);
printf(“目前各种资源可利用的数量为:\n“);//各种资源的总数量减去已分配后剩余的资源量  
for (j=0;j printf(“ %d“Available[j]); 
printf(“\n“);
printf(“-----------------------------------------------------------------\n“); 
printf(“各进程还需要的资源数量:\n“); //各进程还需要的资源数量
for(i=0;i printf(“        资源%d“i); 
printf(“\n“);
for (i=0;i printf(“进程%d    “i); 
for (j=0;j printf(“%d        “Need[i][j]         );  
printf(“\n“);

printf(“\n“);
printf(“-----------------------------------------------------------------\n“); 
printf(“各进程已经得到的资源量: \n“);//打印各进程已经得到的资源量 
for(i=0;i printf(“        资源%d“i); 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-11-04 08:08  bank\
     目录           0  2014-11-03 15:10  bank\Debug\
     文件      192586  2014-11-03 14:58  bank\Debug\bank.exe
     文件      294300  2014-11-03 14:58  bank\Debug\bank.ilk
     文件       19554  2014-11-03 14:58  bank\Debug\bank.obj
     文件      203828  2014-11-03 11:26  bank\Debug\bank.pch
     文件      459776  2014-11-03 14:58  bank\Debug\bank.pdb
     文件       33792  2014-11-03 14:58  bank\Debug\vc60.idb
     文件       53248  2014-11-03 14:58  bank\Debug\vc60.pdb
     文件        7207  2014-11-04 08:08  bank\bank.cpp
     文件        3377  2014-11-03 11:26  bank\bank.dsp
     文件         516  2014-11-03 11:49  bank\bank.dsw
     文件       41984  2014-11-04 08:08  bank\bank.ncb
     文件       49664  2014-11-04 08:08  bank\bank.opt
     文件        1128  2014-11-03 14:58  bank\bank.plg

评论

共有 条评论