资源简介
银行家算法是一个经典的避免死锁的算法,此模拟程序可以让同学们更好的理解银行家算法的思想
代码片段和文件信息
#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 {
相关资源
- C++写的SIS疾病传播模型模拟
- C++实现的旅行商问题
- Oracle OCCI(C++) 连接程序
- C++ NORAD SGP4/SDP4 Implementation
- VC++操作MSChart表格控件,效果不错。
- C++屏幕录制
- 《C++程序设计》 美 Y.Daniel Liang (梁勇
- 自动生成算式的四则运算机器
- C++游戏编程快速入门视频教程 高清不
- C++游戏服务器开发从入门到掌握.txt
- C++入门学习资料
- 郁金香vc++辅助教程合集
- C++高斯白噪声程序
- 用new和delete运算符动态分配内存空间
- 吕鑫-VS2015之C.C++.MFC等完整视频链接
- 数字图像处理原理与实践 基于Visua
- 套接字编程Socketc++实现源码
- c++ socket编程服务端代码!!!
- UE4中文视频教程,全面解析UE4中C++代
- 排队论MM1模型的C++仿真程序
- win10下vs2015编译TensorFlow1.4 C++源码 CP
- VC++ MFC 的计算器的详细设计
- ftp客户端的C语言实现
- 银行账户管理系统c++)
- vc++ 和 openGL 做的 3D水波模拟 非常炫
- 分水岭图像分割算法 c++实现
- tcp udp 底层c++封装类windows和linux
- c++c#结构体转换工具
- 操作系统的模拟实现 C++编写
- VC++实现算数编码
评论
共有 条评论