




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法的实现 一、初始化由用户输入数据,分别对可利用资源向量矩阵AVAILABLE、最大需求矩阵MAX、分配矩阵ALLOCATION、需求矩阵NEED赋值。二、银行家算法在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可以避免发生死锁。银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。它是最具有代表性的避免死锁的算法。设进程cusneed提出请求REQUEST i,则银行家算法按如下规则进行判断。(1)如果REQUEST cusneed i= NEEDcusneedi,则转(2);否则,出错。(2)如果REQUEST cusneed i= AVAILABLEcusneedi,则转(3);否则,出错。(3)系统试探分配资源,修改相关数据: AVAILABLEi-=REQUESTcusneedi; ALLOCATIONcusneedi+=REQUESTcusneedi; NEEDcusneedi-=REQUESTcusneedi;(4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。三、安全性检查算法运行安全性检查算法如下:1)Work = Available;Finish = false;2)寻找满足如下条件的i: Finishi=false并且NeediWorki; 如果不存在,则转步骤 4);3)Work = Work + Allocationi;Finishi = true; 转步骤 2);4)如果对于所有i,Finishi = true,则系统处于安全状态,否则处于不安全状态。 (1)设置两个工作向量Work=AVAILABLE;FINISH(2)从进程集合中找到一个满足下述条件的进程,FINISH=false;NEED=Work;如找到,执行(3);否则,执行(4)(3)设进程获得资源,可顺利执行,直至完成,从而释放资源。Work+=ALLOCATION;Finish=true;GOTO 2(4)如所有的进程Finish= true,则表示安全;否则系统不安全。各算法流程图 #include using namespace std;#define MAXPROCESS50/*最大进程数*/ #define MAXRESOURCE100/*最大资源数*/ int AVAILABLEMAXRESOURCE; /*/ /* 可用资源数组 */ int MAXMAXPROCESSMAXRESOURCE; /*/ /* 最大需求矩阵 */ int ALLOCATIONMAXPROCESSMAXRESOURCE; /*/ /* 分配矩阵 */ int NEEDMAXPROCESSMAXRESOURCE; /*/ /* 需求矩阵 */ int REQUESTMAXPROCESSMAXRESOURCE; /*/ /* 进程需要资源数 */ bool FINISHMAXPROCESS; /*/ /* 系统是否有足够的资源分配 */ int pMAXPROCESS; /*/ /* 记录序列 */ int m,n; /*/ /* m个进程,n个资源 */ void Init();bool Safe();void Bank();int main()Init();Safe();Bank();getchar(); / 给出系统拥有的每种资源数,已经分配给每个进程的资源数,还有每个进程最多需要每种资源的个数,让你判断当前系统是不是安全的 void Init() /*/ /* 初始化算法 */ int i,j;cout m;cout n;cout 请输入每个进程最多所需的各资源数,按照 m x n 矩阵输入 endl; for (i = 0 ;i m;i + ) for (j = 0 ;j MAXij;cout 请输入每个进程已分配的各资源数,也按照 m x n 矩阵输入 endl; for (i = 0 ;i m;i + ) for (j = 0 ;j ALLOCATIONij;NEEDij = MAXij - ALLOCATIONij; if (NEEDij 0 ) cout 您输入的第 i + 1 个进程所拥有的第 j + 1 个资源数错误,请重新输入: endl;j - ; continue ; cout 请输入各个资源现有的数目: endl; for (i = 0 ;i AVAILABLEi; void Bank() /*/ /* 银行家算法 */ int i,cusneed; char again; while ( 1 ) Restart:cout 请输入要申请资源的进程号(注:第1个进程号为0,依次类推) cusneed;cout 请输入进程所请求的各资源的数量 endl; for (i = 0 ;i REQUESTcusneedi; for (i = 0 ;i NEEDcusneedi) cout 您输入的请求数超过进程的需求量!请重新输入! AVAILABLEi) cout 您输入的请求数超过系统有的资源数!请重新输入! endl; goto Restart; for (i = 0 ;i n;i + ) AVAILABLEi -= REQUESTcusneedi;ALLOCATIONcusneedi += REQUESTcusneedi;NEEDcusneedi -= REQUESTcusneedi; if (Safe() cout 同意分配请求! endl; else cout 您的请求被拒绝! endl; for (i = 0 ;i n;i + ) AVAILABLEi += REQUESTcusneedi;ALLOCATIONcusneedi -= REQUESTcusneedi;NEEDcusneedi += REQUESTcusneedi; for (i = 0 ;i m;i + ) FINISHi = false ; cout 您还想再次请求分配吗?是请按y/Y,否请按其它键 again; if (again = y | again = Y ) continue ; break ; bool Safe() /*/ /* 安全性算法 */ int i,j,k,l = 0 ; int WorkMAXRESOURCE; /*/ /* 工作数组 */ for (i = 0 ;i n;i + )Worki = AVAILABLEi; for (i = 0 ;i m;i + ) FINISHi = false ; for (i = 0 ;i m;i + ) if (FINISHi = true ) continue ; else for (j = 0 ;j Workj) break ; if (j = n) /*/ /* 那么你就需要看每个进程还需要每种资源多少,把它计算出来,然后看你剩下的可分配的资源数是不是可以达到其中一个进程的要求,如果可以,就分配给它,让这个进程执行,执行结束后,这个进程释放资源,重新计算系统的可分配的资源 */ FINISHi = true ; for (k = 0 ;k n;k + ) Workk += ALLOCATIONik; pl + = i;i =- 1 ; else continue ; if (l = m) cout 系统是安全的 endl;cout 安全序列: endl; for (i = 0 ;i l;i + ) cout pi; if (i != l - 1 ) cout ; cout endl; return true ; cout 系统是不安全的 endl; return false ; 、银行算法是怎样避免死锁的: 银行家算法是这样的:1)当一个用户对资金的最大的需求量不超过银行家现有的资金时就可以接纳该用户。2)用户可以分期贷款,但贷款的总数不能超过最大需求量。3)当银行家现有的资金不能满足用户的尚需贷款时,对用户的贷款可推迟支付,但总能使用户在有限的时间里得到贷款。4)当用户得到所需的全部资金后,一定能在有限的时间里归还所有资金。我们把操作系统看作是银行家,操作系统管理的资源相当于是银行家管理的资金,则银行家算法就是:1)当一个进程首次申请资源时,测试该进程对资源的最大的需求量,如果不超过系统现存资源时就可以按他的当前申请量为其分配资源。 否则推迟分配。2)进程执行中继续申请资
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 精细化快递末端网点承包管理与效益提升协议
- 体育赛事策划执行与赞助商合作协议
- 体育赛事替身保险补充协议针对运动员保障
- 介入治疗防护规范与实施
- 高效生物医药专利整合与商业化运营合作协议
- 仲裁裁决书翻译与执行合同
- 美容美发行业连锁经营与品牌拓展合同
- 股权补偿款担保及股权激励计划解除实施协议
- 物联网设备数据访问安全保证协议
- 红木家具修复与品牌形象设计合同
- 2024-2024年上海市高考英语试题及答案
- 医院培训课件:《医务人员职业暴露及安全防护》
- 石油工程概论智慧树知到期末考试答案章节答案2024年中国石油大学(华东)
- 良性阵发性位置性眩晕完整版本课件
- 液压系统故障诊断分析课件
- “安全月”安全生产知识竞赛参赛队伍报名表
- 老化箱点检表A4版本
- 超高性能混凝土研究进展及工程应用199页PPT_ppt
- 视觉心理学(全套400页PPT课件)
- 设计学概论设计批评课件
- 教你如何填省普通高中学生档案
评论
0/150
提交评论