admin管理员组

文章数量:1531792

银行家算法分析:

银行家算法数据结构:

进程数 processNum
资源类数 resourceNum
系统剩余可利用资源Available,为一个含有m个元素的数组;
最大需求矩阵Max,为一个processNum*resourceNum数组
进程当前已分配资源数Allocation,为一个processNum*resourceNum数组
进程尚需要的资源数Need,为一个processNum*resourceNum数组
所以有关系如下: Need[i,j] + Allocation[i,j] = Max[i,j]

算法大致模块含:安全性检测模块,数据初始化模块,数据显示模块;
其中安全性检测为主要模块:

1.系统对进程轮流进行检查,找到可以尝试(意味着请求失败还需要还回)分配资源的进程:

此时需要一个新的数据,**Request[j]**记录当前进程的资源申请向量;
条件如下:

Request[j] + Allocation[i,j] <= Max[i,j];
Request[j] <= Available[j];

如果满足条件则对当前进程开始进行资源分配,更新当前数据结构中的值

2.检测当前系统是否会处于安全状态,是则记录安全序列

此时需要一个一维数组work记录等同于Available
(因为当前暂且属于尝试分配状态,不能改变系统资源状态,否则最后如果判断进程死锁的话,系统资源状态不好恢复)

bool类型Finish[processNum]:表示进程是否有足够资源运行完成
(想要可以运行完成,必定要满足Need[i,j]<Available[j]

如果最后判断进程死锁,则需要把尝试分配阶段的资源归还!

尚待改进:

本文标签: 作业银行家算法操作系统语言