资源简介
银行家算法是一个经典的避免死锁的算法,此模拟程序可以让同学们更好的理解银行家算法的思想
代码片段和文件信息
#include
using namespace std;
int Available[30]; //可用资源数组
int Max_matrix[20][30]; //最大需求矩阵
int Allocation[20][30]; //分配矩阵
int Need[20][30]; // 需求矩阵
int Request[20][30]; //进程需要资源数
bool Finish[20]; // 系统是否有足够的资源分配
int p[20]; //记录序列
int mn; // m个进程n个资源
void Initial();
bool Safe();
void Bank();
int main()
{
Initial();
Safe();
Bank();
}
void Initial() //初始化算法
{
int ij;
cout<<“请输入进程的数目:“;
cin>>m;
cout<<“请输入资源的种类:“;
cin>>n;
cout<<“请输入每个进程最多所需的各资源数(Max_matrix[i][j])按照“< for(i=0;i for(j=0;j cin>>Max_matrix[i][j];
cout<<“请输入每个进程已分配的各资源数也按照(Allocation[i][j])“< for(i=0;i {
for(j=0;j {
cin>>Allocation[i][j];
Need[i][j]=Max_matrix[i][j]-Allocation[i][j];
if(Need[i][j]<0)
{
cout<<“您输入的第“< j--;
continue;
}
}
}
cout<<“请输入各个资源现有的数目(Available:)“< for(i=0;i {
cin>>Available[i];
}
}
void Bank() //银行家算法
{
int iask;
char again;
while(1)
{
cout<<“请输入要申请资源的进程号(注:第1个进程号为0依次类推)“< cin>>ask;
cout<<“请输入进程所请求的各资源的数量“< for(i=0;i {
cin>>Request[ask][i];
}
for(i=0;i {
if(Request[ask][i]>Need[ask][i])
{
cout<<“您输入的请求数超过进程的需求量!请重新输入!“< continue;
}
if(Request[ask][i]>Available[i])
{
cout<<“您输入的请求数超过系统有的资源数!请重新输入!“< continue;
}
}
for(i=0;i {
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
评论
共有 条评论