C++实现银行家算法

一、银行家算法

把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源。

具体要求如下:
①当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。

②当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足,则按当前的申请量分配资源,否则也要推迟分配。

③系统进行安全性算法,检查此次分配后,系统是否还处于安全状态,若安全,把资源分配给进程p[i];否则,恢复原来的资源分配状态,让进程p[i]等待。
程序流程图

二、代码
//银行家算法 
#include<iostream>
using namespace std;
int m=3,n=5;  // m类可利用资源,n个进程
int resource[3]={
   10,5,7}; //总资源 
int available[3]={
   3,3,2};//现可分配资源 
int allocation[5][3]; //输入初始值 每个进程已占有的每类资源个数 
int need[5][3];//输入初始值  每个进程每类资源需要的个数 
int main(){
   
	int x;
	int request[3]={
   0};
	cout<<"已知有五个进程,三类可利用资源"<<endl; 
	cout<<"可分配总资源量为:3,3,2"<<endl; 
	cout<<"请输入已分配矩阵:"<<endl; 
	for(int i=0;i<5;i++){
   
		for(int j=0;j<3;j++){
   
			cin>>allocation[i][j]; 
		}
	}
	cout<<"请输
  • 2
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值