银行家算法原理及其实现

1、原理解释安全状态:如果存在一个由系统中所有进程构成的安全序列P1,…,Pn,则系统处于安全状态。安全状态一定是没有死锁发生。不安全状态:不存在一个安全序列。不安全状态不一定导致死锁。安全序列:一个进程序列{P1,…,Pn}是安全的,如果对于每一个进程Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj (j < i )当前占有资源量之和。银行家算法中的主要思想:在任何时刻保证至少有一个进程能得到所需的全部资源而执行到结束。银行家算法通过动态地检测系统中资源分配情
摘要由CSDN通过智能技术生成

1、原理解释

安全状态:如果存在一个由系统中所有进程构成的安全序列P1,…,Pn,则系统处于安全状态。安全状态一定是没有死锁发生。
不安全状态:不存在一个安全序列。不安全状态不一定导致死锁。
安全序列:一个进程序列{P1,…,Pn}是安全的,如果对于每一个进程Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj (j < i )当前占有资源量之和。

银行家算法中的主要思想:在任何时刻保证至少有一个进程能得到所需的全部资源而执行到结束。
银行家算法通过动态地检测系统中资源分配情况和进程对资源的需求情况来决定如何分配资源,并能在确保系统处于安全状态时才把资源分配给申请者,从而避免系统发生死锁。

2、对变量名的解释

  • Available:是一个长度为m的向量,他表示每类资源可用的数量,Available[j]=k表示rj类资源可用的数量是k
  • Max:是一个nXm矩阵,表示每个进程对资源的最大需求,Max[i,j]=k表示进程 p i p_i pi至多可申请k个 r j r_j rj类资源单位。
  • Allocation:是一个n*m的矩阵,表示当前分给每个进程的资源数目。Allocation[i,j]=k表示进程 p i p_i pi当前分到k个 r j r_j rj类资源
  • Need:是一个nXm矩阵,表示每个进程还缺少多少个资源数目.Need[i,j]=k,表示进程 p i p_i pi还需要k个 r j r_j rj类资源才能完成任务。显然:Need[i,j]=Max[i,j]-Allocation[i,j]
  • Work和Finish分别表示长度为m和n的向量,最初,置Work:=Available,Finish[i]:=false,i=1,2,3,…

3、程序实现

#include<iostream>
using namespace std;

#define resourceNum 3  //系统有多少类资源
#define processNum 5  //进程数
#define needResourceProcess 3  //需要申请资源的进程个数

//当前每类资源可用数目
int available[resourceNum] = {
    3,3,2 };
//每个进程对每类资源的最大需求量
int Max[processNum][resourceNum] = {
    {
   7,5,3},{
   3,2,2
  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值