- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                
编程序模拟银行家算法
1. 引言
为了提高资源利用率,应采用动态分配资源的方法。但是,为了避免可能产生的死锁,在进行资源分配时,应采用某种算法来预测是否有可能发生死锁,若存在可能性,就拒绝企图获得资源的请求。预防死锁和避免死锁的不同在于,前者所采用的分配策略本身就否定了必要条件之一,这样就保证死锁不可能发生;而后者是在动态分配资源的策略下采用某种算法来预防可能发生的死锁,从而拒绝可能引起死锁的其个资源请求,银行家算法是避免死锁的一种重要方法。银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。它是最具有代表性的避免死锁的算法。
2. 算法的原理
    银行家算法是一种最有代表性的避免死锁的算法。要解释银行家算法,必须先解释操作系统安全状态和不安全状态。
    安全状态:如果存在一个由系统中所有进程构成的安全序列P1,…,Pn,则系统处于安全状态。安全状态一定是没有死锁发生。
    不安全状态:不存在一个安全序列。不安全状态不一定导致死锁。
那么什么是安全序列呢?
安全序列:一个进程序列{P1,…,Pn}是安全的,如果对于每一个进程Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj (j  i )     我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。
3.算法的实现
3.1 初始化
    由用户输入数据,分别对可利用资源向量矩阵AVAILABLE、最大需求矩阵MAX、分配矩阵ALLOCATION、需求矩阵NEED赋值。
3.2 算法思想
    在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可以避免发生死锁。
银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。它是最具有代表性的避免死锁的算法。
设进程cusneed提出请求REQUEST [i],则银行家算法按如下规则进行判断。
(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)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。
3.3 程序流程图
  
3.4 安全性检查算法
(1)设置两个工作向量Work=AVAILABLE;FINISH
(2)从进程集合中找到一个满足下述条件的进程,
FINISH==false;
NEED=Work;
   如找到,执行(3);否则,执行(4)
(3)设进程获得资源,可顺利执行,直至完成,从而释放资源。
Work+=ALLOCATION;
Finish=true;
GOTO 2
如所有的进程Finish= true,则表示安全;否则系统不安全。
3.5  定义全局变量
int Available[x];     //各种资源可利用的数量
int Allocation[y][y]; //各进程当前已分配的资源数量
int Max[y][y];       //各进程对各类资源的最大需求数
int Need[y][y];      //还需求矩阵
int Request[x];     //申请各类资源的数量
int Work[x];        //工作向量,表系统可提供给进程运行所需各类资源数量
int Finish[y];      //表系统是否有足够的资源分配给进程,0为否,1为是
4. 程序代码
#include iostream
using namespace std;
#define MA
                您可能关注的文档
- 限时训练(十三)文言文之古代传记阅读(第一课时)中.doc
 - 详解《阿甘正传》中.doc
 - 详解公务员九类面试考题(强烈推荐)中.doc
 - 象形词义串联记忆法将象形单词的意义串联成一句汉语或者汉语顺口溜中.doc
 - 象形词义串联记忆法中.doc
 - 销售代表合同(委托销售)中.doc
 - 销售分析报表中.doc
 - 销售管理小组作业-2中.ppt
 - 销售华南分公司-附录D设备安装工程(227-250)中.doc
 - 销售技巧培训中.doc
 
- 新型萘四甲酰亚二胺类侧链功能化有机半导体的合成及其性能表征.pdf
 - 信息重组策略在即兴发言汉英交替传译中的应用分析——以《中国民居(第二季)》模拟口译实践为例.pdf
 - 叶兆言历史题材创作的互文性研究.pdf
 - 信息化背景下农村小学家校沟通现状的调查研究——以徐州市铜山区D镇小学为例.pdf
 - 循环加载环境下高温超导堆叠结构低温压缩及多场性能实验表征研究.pdf
 - 氧化钨_氧化锌复合纳米结构调控及其气敏传感特性研究.pdf
 - 厌氧好氧时间比对EBPR中好氧颗粒形成及除磷过程的影响研究.pdf
 - 氧空位对NbO2金属-绝缘转变的影响机理研究.pdf
 - 氧化物半导体的晶面改性及其光催化性能探究.pdf
 - 信息流模式下社交电商平台青年用户信息规避行为影响因素研究.pdf
 
原创力文档
                        

文档评论(0)