admin管理员组文章数量:1122849
银行家算法分析:
银行家算法数据结构:
进程数 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])
如果最后判断进程死锁,则需要把尝试分配阶段的资源归还!
尚待改进:
版权声明:本文标题:操作系统作业之银行家算法(c语言实现) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1727375815a1244783.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论