好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

银行家算法及流程图.docx

13页
  • 卖家[上传人]:教****
  • 文档编号:240443634
  • 上传时间:2022-01-15
  • 文档格式:DOCX
  • 文档大小:150.50KB
  • / 13 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 名师归纳总结 精品word资料 - - - - - - - - - - - - - - -学习资料收集于网络,仅供参考银行家算法及流程图算法的实现一、初始化由用户输入数据,分别对可利用资源向量矩阵 AVAILABLE、最大需求矩阵 MAX、安排矩阵 ALLOCATIO、N需求矩阵 NEED赋值;二、银行家算法在防止死锁的方法中, 所施加的限制条件较弱, 有可能获得令人中意的系统性能;在该方法中把系统的状态分为安全状态和担心全状态,只要能使系统始终都处于安全状态,便可以防止发生死锁;银行家算法的基本思想是安排资源之前 , 判定系统是否是安全的 ; 如是, 才安排;它是最具有代表性的防止死锁的算法;设进程 cusneed 提出恳求 REQUES[Ti] ,就银行家算法按如下规章进行判定;(1) 假如 REQUEST [cusneed] [i]<= NEED[cusneed][i] ,就转 〔2〕 ;否就,出错;(2) 假如 REQUEST [cusneed] [i]<= AVAILABLE[cusneed][i] ,就转 〔3〕 ;否就,出错;(3) 系统摸索安排资源,修改相关数据: AVAILABLE[i]-=REQUEST[cusneed][i]; ALLOCATION[cusneed][i]+=REQUEST[cusneed][i]; NEED[cusneed][i]-=REQUEST[cusneed][i];(4) 系统执行安全性检查,如安全,就安排成立;否就摸索险性安排作废,系统复原原状,进程等待;三、安全性检查算法(1) 设置两个工作向量 Work=AVAILABLE;FINISH(2) 从进程集合中找到一个满意下述条件的进程,FINISH==false; NEED<=Work;如找到,执行 〔3〕 ;否就,执行 〔4〕(3) 设进程获得资源,可顺当执行,直至完成,从而释放资源;Work+=ALLOCATION;Finish=true;GOTO 2(4) 如全部的进程 Finish= true ,就表示安全;否就系统担心全;各算法流程图初始化算法流程图:学习资料 第 1 页,共 9 页 - - - - - - - - -名师归纳总结 精品word资料 - - - - - - - - - - - - - - -学习资料收集于网络,仅供参考银行家算法流程图:学习资料 第 2 页,共 9 页 - - - - - - - - -名师归纳总结 精品word资料 - - - - - - - - - - - - - - -学习资料收集于网络,仅供参考安全性算法流程图:学习资料 第 3 页,共 9 页 - - - - - - - - -名师归纳总结 精品word资料 - - - - - - - - - - - - - - -学习资料收集于网络,仅供参考源程序清单#include using namespace std;#define MAXPROCESS50 /* 最大进程数 */#define MAXRESOURCE100 /* 最大资源数 */int AVAILABLE[MAXRESOURCE]; /*可用资源数组 */int MAX[MAXPROCESS][MAXRESOURCE]; /* 最大需求矩阵*/int ALLOCATION[MAXPROCESS][MAXRESOURCE]; /* 安排矩阵 */int NEED[MAXPROCESS][MAXRESOURCE]; /* 需求矩阵 */ int REQUEST[MAXPROCESS][MAXRESOURCE]; /* 进程需要资源数*/ boolFINISH[MAXPROCESS]; /*学习资料 第 4 页,共 9 页 - - - - - - - - -名师归纳总结 精品word资料 - - - - - - - - - - - - - - -学习资料收集于网络,仅供参考系统是否有足够的资源安排 */ intp[MAXPROCESS];/* 记录序列 */int m,n;/*m 个进程 ,n 个资源 */void Init〔〕; bool Safe〔〕; void Bank〔〕; int main〔〕{Init〔〕;Safe〔〕;Bank〔〕;}void Init〔〕 /* 初始化算法 */{int i,j;cout<<" 请输入进程的数目 :"; cin>>m;cout<<" 请输入资源的种类 :";cin>>n;cout<<" 请输入每个进程最多所需的各资源数 , 根据"<>MAX[i][j];cout<<" 请输入每个进程已安排的各资源数 , 也根据 "<>ALLOCATION[i][j]; NEED[i][j]=MAX[i][j]-ALLOCATION[i][j]; if〔NEED[i][j]<0〕{cout<<" 您输入的第 "<>AVAILABLE[i];}}void Bank〔〕 /* 银行家算法 */{int i,cusneed; char again; while〔1〕{次类推 〕"<>cusneed;cout<<" 请输入进程所恳求的各资源的数量 "<>REQUEST[cusneed][i];}for〔i=0;iNEED[cusneed][i]〕{量. 请重新输入 ."<AVAILABLE[i]〕{数. 请重新输入 ."<>again; if〔again=='y'||again=='Y'〕{}bool Safe〔〕{}break;}/* 安全性算法 */ int i,j,k,l=0;intcontinue;Work[MAXRESOURCE]; /* 工作数组*/for〔i=0;iWork[j]〕{break;}}if〔j==n〕{FINISH[i]=true; for〔k=0;k

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.