资源简介
银行家算法分配资源的模拟实现(main.cpp)
代码片段和文件信息
#include
#include
using namespace std;
#define Max_process 50 /*最大进程数*/
#define Max_source 50 /*最大资源数*/
int Available[Max_source]; /*可用资源数组*/
int Max_use[Max_process][Max_source]={{753}{322}{902}{222}{433}}; /*最大需求矩阵*/
int Allocation[Max_process][Max_source]={{010}{200}{302}{211}{002}}; /*分配矩阵*/
int Need[Max_process][Max_source]; /*需求矩阵*/
int Request[Max_process][Max_source]; /*进程需要资源数*/
bool Finish[Max_process]; /*系统是否有足够的资源分配*/
int p[Max_process]; /*记录序列*/
int m=5 n=3; /*m个进程n个资源*/
void Init();
bool Safe();
void Bank_safe();
void Show(int int);
int main()
{
Init();
Safe();
Bank_safe();
}
void Init() /*初始化算法*/
{
int ij;
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
//scanf(“%d“&Allocation[i][j]);
Need[i][j] = Max_use[i][j] -Allocation[i][j];
/* if (Need[i][j] < 0)
{
printf(“您输入的第%d个进程所拥有的第%d个资源数 错误请重新输入:\n“i+1j+1);
j--;
continue;
}*/
}
}
printf(“请输入各个资源现有的数目:\n“);
for (i = 0; i < n; i++)
{
scanf(“%d“&Available[i]);
}
}
void Bank_safe() /*银行家算法*/
{
int i cusneed flag = 0;
char again;
while (1)
{
Show(n m);
input:
printf(“请输入要申请资源的进程号(注:第1个进程号为0依次类推)\n“);
scanf(“%d“&cusneed);
if (cusneed >=m)
{
printf(“没有该进程,请重新输入\n“);
goto input;
}
printf(“请输入进程所请求的各资源的数量\n“);
for (i = 0; i < n; i++)
{
scanf(“%d“&Request[cusneed][i]);
}
for (i = 0; i < n; i++)
{
if (Request[cusneed][i] > Need[cusneed][i])//如果用户选择的线程的第i个资源请求数>该线程该资源所需的数量
{
printf(“您输入的请求数超过进程的需求量!请重新输入!\n“);
goto input;
}
if (Request[cusneed][i] >Available[i])//如果用户选择的线程的第i个资源请求数>系统现有的第i个资源的数量
{
printf(“您输入的请求数超过系统有的资源数!请重新输入!\n“);
goto input;
}
}
for (i = 0; i < n; i++)//如果请求合理,那么下面
{
Available[i] -= Request[cusneed][i];//系统可用资源减去申请了的
Allocation[cusneed][i] += Request[cusneed][i];//线程被分配的资源加上已申请了的
Need[cusneed][i] -= Request[cusneed][i];//线程还需要的资源减去已申请得到的
}
if (Safe())//AVAILABLE Allocation Need变动之后,是否会导致不安全
{
printf(“同意分配请求!\n“);
}
else
{
printf(“您的请求被拒绝!\n“);
for (i = 0; i < n; i++)
{
Available[i] += Request[cusneed][i];
Allocation[cusneed][i] -= Request[cusneed][i];
Need
- 上一篇:C语言推箱子win控制台
- 下一篇:c++ 用户登录(基于xm
l)
相关资源
- C语言编译器的设计与实现.doc
- 2048小游戏c语言实现
- 转 VC++ 实现电子邮件(Email)发送
- 使用 IBM Rational Systems Developer 和 Rati
- 23种设计模式(C++实现版本
- 扫描线多边形填充算法实现
- 可靠性试验数据处理方法与工程实现
- c++实现的文件上传服务器
- 一个C++实现的源代码行数统计工具
- 利用C++类实现PNG图像读写及显示
- TD-SCDMA测试仪中Iub接口实现RLC层信令解
- 高效FFT的C/C++代码实现包括基2的DIF和
- 纯C++实现的截屏
- 车牌识别系统,VS2010实现,语言C++
- C++实现21点游戏
- 算法_C语言的实现完整版
- tiny+编译器C++实现
- 基于图割的图像分割OpenCV+MFC实现
- 数值分析算法程序设计 C++实现
- 银行计算机专业笔试题目+答案
- mysql+dev c++实现订单管理系统
- C语言实现的航空售票系统
- VC++实现RSA加密算法
- 简单通讯录C语言实现
- AAM算法实现
- 多功能计算器实现C++代码以及代码详
- C语言数据结构银行客户排队
- C语言实现栈操作
- C语言实现的银行家算法 做了界面
- C++模拟存储器的分配与回收算法实现
评论
共有 条评论