栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

银行家算法——C++实现

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

银行家算法——C++实现

运行结果

算法描述


代码实现
#include
using namespace std;

const int M=5;	// 进程数 
const int N=3;	// 资源数 

// 最大需求矩阵 m*n矩阵定义m个进程对n类资源的最大需求量
int Max[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};
// 可用资源向量 长度为n的数组表示系统中n类资源的当前可用数目
int Available[N]={3,3,2};
// 已分配资源矩阵 m*n矩阵定义了每个进程现在已分配到的各类资源的实际数目
int Allocation[M][N]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}}; 
// 需求矩阵 m*n矩阵表示每个进程还需要的各类资源的数目
int Need[M][N]={{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}}; 

int Request[N]={0,0,0};

// 当前资源分配情况 
void show(){
	int i,j;
	cout<<"系统可用的资源数为:"<Work[j]){
					flag=false;
				}
			}
		}else{
			continue;
		}
		if(flag){
			return i;
		}
	}
	return -1;
}

bool check(){
	int Work[N]={Available[0],Available[1],Available[2]};
	bool Finish[M]={false};
	while(1){
		int i=find(Work,Finish);
		if(i==-1){
			break;
		}
		// 进程Pi释放所占的全部资源
		for(int j=0;j>k;
	if(k==-1){
		exit(0);
	}
	memset(Request,0,sizeof(Request));
	cout<<"请输入N中资源的请求数量: ";
	for(int j=0;j>Request[j];
	}
	for(int j=0;jNeed[k][j]){
			cout<<"进程Pi对资源的请求量已超过其说明的最大数量";
			return; 
		}
		if(Request[j]>Available[j]){
			cout<<"系统现在没有可用的资源,进程k必须等待n";
			return;
		}
	}
	// 系统给进程k分配所请求的资源
	for(int j=0;j
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352407.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号