实验内容:
编程实现银行家算法中的安全性检查子算法,要求:
(1) 本程序要能描述 n 个并发进程共享 m 类资源,在某一时刻的资源分配状态;
n、m 自定,但都不能小于 3;
(2) 本程序功能:
① 联机输入:系统拥有的每类资源的最大数量(即可利用资源向量的初值)、
n 个进程的最大需求矩阵、当前时刻 n 个进程的已分配资源矩阵;
② 如果①中出现不合理的输入,直接检查指出,并不进行后续步骤,程序
结束;
③ 计算并输出系统当前时刻的可利用资源向量;
④ 计算并输出当前时刻 n 个进程的还需要资源矩阵;
⑤ 根据安全性检查算法,判定当前系统状态是否安全,输出检查结论。
注意:
(1) 这里所指的“不合理的输入”是:某进程对某资源的最大需求大于系统拥有
该类资源的最大数量;某进程在某类资源上,已分配资源大于它的最大需求等。
(2) 这个算法是“银行家算法”的子算法,其中用到的数据结构必须采用与银行
家算法相同的数据结构(见教材),以方便下次实验使用
设计、运行程序,记录设计程序的源代码;
运行时的输入数据,应该包含合理输入和不合理输入两种情况;
观察并记录运行结果。
/*这里模拟的是3个进程申请3个资源*/
要用.cpp的格式保存下列代码
#include <stdio.h>
#define N 3 //进程数目
#define M 3 //资源类数
#define M 3 //资源类数
int Available[M]; //空闲资源向量Available
int Max[N][M]; //最大需求矩阵Max
int Allocation[N][M]; //分配矩阵Allocation
int Need[N][M]; //需求矩阵Need
int Max[N][M]; //最大需求矩阵Max
int Allocation[N][M]; //分配矩阵Allocation
int Need[N][M]; //需求矩阵Need
bool bankSecurable(int allocation[N][M],int available[M]){
STEP1:
int finish[N];
int work[M];
int i=0; //第i个进程
int j=0; //第j个资源
int finish[N];
int work[M];
int i=0; //第i个进程
int j=0; //第j个资源
for( i=0;i<N;i++){
finish[i]=false;
}
for( j=0;j<M;j++){
work[j]=available[j];
}
finish[i]=false;
}
for( j=0;j<M;j++){
work[j]=available[j];
}
STEP2:
for( i=0;i<N;i++){
if(finish[i]==false&&Need[i][0]<=work[0]&&Need[i][1]
for( i=0;i<N;i++){
if(finish[i]==false&&Need[i][0]<=work[0]&&Need[i][1]