当前位置:首页 > 生活百科

什么是银行家算法c(银行家算法计算过程)

栏目:生活百科日期:2025-06-03浏览:0

1、银行家算法介绍

银行家算法是最著名的死锁避免算法。当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量时,则按当前的申请量分配资源,否则,推迟分配。

2、数据结构描述

2.1、可利用资源矢量Avaiable

含有m个元素的数组,其中的每一个元素代表一类可用的资源数目。Available[j]=k,则表示系统中现有Rj类资源K个。

2.2、最大需求矩阵Max

为n×m矩阵,定义了系统中n个进程中的每一个进程对m类资源的最大需求。Max[i,j]=K,则表示进程i需要Rj类资源最大数目为K

2.3、分配矩阵Allocation

为n×m矩阵,定义了系统中每一类资源当前已分配给每一进程的资源数。Allocation[i,j]=K,则表示进程i当前已分配得Rj类资源的数目为K。

2.4、需求矩阵Need

为n×m矩阵,表示每个进程尚需的各类资源数,Need[i,j]=K,则表示进程i还需要Rj类资源数目为K

3、银行家算法描述

3.1、银行家算法

设Request i是进程Pi的请求矢量,如果Request i[j]=K,表示进程Pi需要Rj类资源K个。当Pi发出资源请求后,系统按下述步骤进行检测:

1、如果Request i&[j] ≤Need&[i,j],便转向步骤2,否则认为出错,因为它所需的资源数超过了它所宣布的最大值。2、如果Request i&[j] ≤Available&[i,j],便转向步骤3,否则,表示尚无足够资源,Pi须等待3、系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值:Available&[j]=Availabe&[j]-Request i&[j]Allocation&[i,j]=Allocation&[i,j]+Request i&[j]Need&[i,j]=Need&[i,j]-Request i&[j]4、系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则,将本次试探分配作废,恢复原来的资源分配状态,让进程Pi等待。

3.2、安全性算法

1.设置两个矢量。

工作矢量Work;它表示系统可提供给进程继续运行所需的各类资源数目,它含有m个元素,在执行安全算法开始时,Work=Available;Finish:它表示系统是否有足够的资源分配给进程,使之运行完成。开始时Finish[i]=false;当有足够资源分配给进程Pi时,再令Finish[i]=true;

2.从进程集合中找到一个能满足下述条件的进程:

Finish[i]=false;Need[i,j]=Work[j];

若找到,执行下一步骤,否则,执行步骤4

3.当进程Pi获得资源后,可顺利执行,直至完成,并释放分配给它的资源,共应执行:

Work[j]=Work[j]+Allocation[i,j];Finish[i]=true;go to step (2)

4.如果所有进程的Finish[i]=true满足,则表示系统处于安全状态;否则系统将处于不安全状态

4、银行家算法举例

假设系统中有5个进程{P0,P1,P2,P3,P4}和三类资源{A,B,C},各种资源的数量分别为10、5、7,在T0时刻资源分配情况见下表:

T0时刻资源分配情况

利用安全性算法对T0时刻资源分配进行分析,由下表可知,在T0时刻存在着一个安全序列{P1,P3,P4,P2,P0},故系统是安全的。

P1请求资源:P1发出请求矢量Request 1(1,0,2)系统按银行家算法检查:

Request 1(1,0,2)≤Need 1(1,2,2)Request 1(1,0,2)≤Available1(3,3,2)系统先假定可为P1分配资源,并修改Available 1、Allocation 1和Need 1矢量,由此形成的资源变化情况可见下表。再利用安全性检查此时系统是否安全。

P4请求资源:P4发出请求矢量Request 4(3,3,0),系统按银行家算法进行检查:

Request 4(3,3,0)≤Need 4(4,3,1)Request 4(3,3,0)>Available(2,3,0),让P4等待

P0请求资源:P0发出请求矢量Request 0(0,2,0),系统按银行家算法进行检查:

Request 0(0,2,0)≤Need 0(7,4,3)Request 0(0,2,0)≤Available(2,3,0)

系统暂时假定可为P0分配资源,并修改有关数据,如下表

进行安全性检查,可以资源Available(2,1,0)已不能满足任何进程需要,故系统进入不安全状态,此时系统不分配资源。

“什么是银行家算法c(银行家算法计算过程)” 的相关文章

利润表的增长率如何计算(分享利润表计算公式大全)

利润表是反映企业一定会计期间(如月度、季度、半年度或年度)生产经营成果的会计报表,一个清晰的利润表可以直接要公司领导直观明了的看清楚公司的运营情况。项目重要性列...

seo零基础入门教程,零基础可以自学seo吗

这次小编来介绍SEO的学习框架是想告诉大家,作为一个SEO人员刚开始学习的时候到底要做哪些事情?这次做一个SEO新手基础入门教程,从不同维度,来给大家详细解读S...

2019农村有什么好的创业项目(这8个生意在农村可以做)

1、现在农村有很多农作物的小脚料,比如:藤蔓、秸秆、块根、块茎等,都可以搅碎干燥成颗粒饲料或者草粉饲料,这些饲料可以大大降低家庭养殖业的成本,变废为宝,可以进行...

qlv格式转换成mp4软件(qlv转换mp4最简单方法)

经常在网上下载视频的小伙伴肯定知道,现在每个视频播放器都有各自的视频格式,比如优酷的KUX、爱奇艺的QSV和腾讯的QLV等,上传审核极不方便。那么该如何将这些特...

一体电脑什么牌子好用,2020一体电脑排行榜

对DIY玩家来说,一体机是绝对不会碰的存在,没办法拓展,而且价格偏高,所以DIYer都比较排斥。但他们没想到,对于一些门店或者设计者、或是讲究整体稳定性的朋友来...

加盟游泳馆需要多少钱(游泳馆连锁加盟店费用)

如今,市场上的中小投资创业项目越来越多,吸引着众多投资者的关注,而对于一个好的项目来说,其必定是有着很高加盟率的,就以婴幼儿游泳馆宝宝洗澡游泳为例,其有着非常乐...

html标题代码(讲解html中title标签的作用)

1.&<h1&>-&<h6&>标签可定义标题。&<h1&>定义最大的标题。&<h6&>定义最小的标题。2.&&l...

内存条测试软件有哪些(内存条的品牌排行)

由于工作需要,潮范君近期的视频渲染需求较多,但每次导出视频都要等待很久,真是令人苦恼。可我的主机配置并不差啊,前段时间还升级了M.2固态硬盘,也换上了水冷散热,...

叮咚买菜急于上市补血

令人想不到的是在生鲜电商市场里,抢先上市的竟然是主打前置仓模式的生鲜电商们。今年6月9日,叮咚买菜向美国证券交易委员会递交IPO申请,计划在美国纳斯达克交易所上...

儿童童装品牌排行榜(质量最好的5大童装品牌)

孩子的衣服以安全舒适为主,好多妈妈为了让宝宝穿得好看,不注意衣服的品质,这样小则可引起孩子过敏,重则甲醛超标或者小部件的误吞,给宝宝健康带来很大影响,给孩子买衣...