资源简介
编制银行家算法通用程序,并检测思考题中所给状态的安全性。
代码片段和文件信息
#include
using namespace std;
#define MAXPROCESS 50 /*最大进程数*/
#define MAXRESOURCE 100 /*最大资源数*/
int AVAILABLE[MAXRESOURCE]; /*可用资源数组*/
int MAX[MAXPROCESS][MAXRESOURCE]; /*最大需求矩阵*/
int ALLOCATION[MAXPROCESS][MAXRESOURCE]; /*分配矩阵*/
int NEED[MAXPROCESS][MAXRESOURCE]; /*需求矩阵*/
int REQUEST[MAXPROCESS][MAXRESOURCE]; /*进程需要资源数*/
bool FINISH[MAXPROCESS]; /*系统是否有足够的资源分配*/
int p[MAXPROCESS]; /*记录序列*/
int mn; /*m个进程n个资源*/
void Init();
bool Safe();
void Bank();
int main()
{int chose;
Init();
Safe();
Bank();
}
void Init() /*初始化算法*/
{
int ij;
cout<<“请输入进程的数目:“;
cin>>m;
cout<<“请输入资源的种类:“;
cin>>n;
cout<<“请输入每个进程最多所需的各资源数按照“< for(i=0;i for(j=0;j cin>>MAX[i][j];
cout<<“请输入每个进程已分配的各资源数也按照“< for(i=0;i {
for(j=0;j {
cin>>ALLOCATION[i][j];
NEED[i][j]=MAX[i][j]-ALLOCATION[i][j];
if(NEED[i][j]<0)
{
cout<<“您输入的第“< j--;
continue;
}
}
}
cout<<“请输入各个资源现有的数目:“< for(i=0;i {
cin>>AVAILABLE[i];
}
}
void Bank() /*银行家算法*/
{
int icusneed;
char again;
while(1)
{
cout<<“请输入要申请资源的进程号(注:第1个进程号为0依次类推)“< cin>>cusneed;
cout<<“请输入进程所请求的各资源的数量“< for(i=0;i {
cin>>REQUEST[cusneed][i];
}
for(i=0;i {
if(REQUEST[cusneed][i]>NEED[cusneed][i])
{
cout<<“您输入的请求数超过进程的需求量!请重新输入!“< continue;
}
if(REQUEST[cusneed][i]>AVAILABLE[i])
{
cout<<“您输入的请求数超过系统有的资源数!请重新输入!“< continue;
- 上一篇:基于MFC和OPENGL的五轴G代码仿真
- 下一篇:VC++连接STK
评论
共有 条评论