资源简介
银行家算法,在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
- 上一篇:SMTP客户端程序(mfc实现)
- 下一篇:过滤防火墙
相关资源
- 计算机操作系统实验报告,C语言实现
- 银行家算法模拟实现C++版
- 银行家算法c语言
- 银行家算法 MFC实现
- 银行家算法-----一个n个并发进程共享
- 银行家算法源程序包含C语言+C++两种代
- 操作系统银行家算法源码
- 银行家算法C语言实现源文件
- 银行家算法c++工程项目文件
- 用C语言实现银行家算法
- 输出所有安全序列的银行家c++算法
- 操作系统 银行家算法 C++
- 银行家算法课程设计报告(c语言版)
- 银行家算法的实现(c++代码)
- 银行家算法实验报告.docx
- 银行家算法Banker-s_Algorithm
- c++ 银行家算法
- 操作系统-银行家算法
- 银行家算法c语言代码
- 银行家算法实验报告C++版
- 银行家算法C语言实现
- 操作系统课程设计银行家算法C语言版
- C语言实现银行家算法
- 死锁的避免――银行家算法
- 银行家算法 C++
- 银行家算法 操作系统
- 银行家算法C语言实现
- 操作系统 银行家算法
评论
共有 条评论