银行家算法总结及实现

QUESTION:银行家算法总结及实现?

目录

QUESTION:银行家算法总结及实现?

ANSWER:

一:银行家算法介绍

1.1什么是银行家算法

1.2背景

1.3数据结构

1.4算法分析

二:安全状态和不安全状态

2.1概念

2.2安全性检查

三:算法实现

3.1流程图

3.2代码实现


ANSWER:

一:银行家算法介绍

1.1什么是银行家算法

银行家算法(Banker's Algorithm)是一种关于操作系统分配资源时避免死锁(Deadlock)产生的安全性检测算法,它类似于银行中贷款的分配策略,由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计的一种避免死锁产生的算法。

1.2背景

在银行中,客户为了完成某个项目需要向银行进行贷款申请,客户已经拥有部分资金,客户给出最大资金需求,银行进行对客户的贷款申请检查,如果客户完全满足申请条件,并且客户申请的资金小于银行拥有的资金总额,则完成对客户的贷款。在这一过程中,银行就像操作系统,客户就像进程,资金就像要申请的资源。

1.3数据结构

1.资源种类数R:

是一个定量,R=n代表有n种资源。

2.进程数P:

也是一个定量,P=n代表有n个进程。

3.可利用的资源数向量Available:

是一个一维向量,Available[n]=k,代表n类资源可利用资源数为k。

4.最大需求矩阵Max:

是一个二维矩阵,Max[n][m]=k,代表第n个进程需要m类的最大数目为k。

5.已经分配的资源数目矩阵Allocation:

是一个二维矩阵,Allocation[n][m]=k,代表n个进程已经分配m类资源的数目为k。

6.需求矩阵Need:

是一个二维向量,Need[n][m]=k,代表进程n还需要m类资源的数目为k。

Need[n][m]=Max[n][m]-Allocation[n][m]。

1.4算法分析

为保证资金的安全,银行家规定:

(1) 当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客;

(2) 顾客可以分期贷款,但贷款的总数不能超过最大需求量;

(3) 当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款;

(4) 当顾客得到所需的全部资金后,一定能在有限的时间里归还所有的资金.

操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程本次申请的资源数是否超过了该资源所剩余的总量。若超过则拒绝分配资源,若能满足则按当前的申请量分配资源,否则也要推迟分配。

     Allocation   Max   AvailableABCD    ABCD  ABCDP1   0014    0656  1520 P2  1432    1942 P3  1354    1356P4  1000    1750

我们会看到一个资源分配表,要判断是否为安全状态,首先先找出它的Need,Need即Max(最多需要多少资源)减去Allocation(原本已经分配出去的资源),计算结果如下:

   NEEDABCD0642 051000020750

然后加一个全都为false的字段:

FINISHfalsefalsefalsefalse

接下来找出Need比Available小的(千万不能把它当成4位数 他是4个不同的数):

  NEED    AvailableABCD  ABCD0642  15200510<-00020750

P2的需求小于能用的,所以分配给他再回收:

NEED     AvailableABCD  ABCD0642  15200000 +14320002-------0750  2952

此时P2 FINISH的false要改成true(己完成):

FINISHfalsetruefalsefalse

接下来继续往下找,发现P3的需求为0002,小于能用的2952,所以资源配置给他再回收:

 NEED      AvailableABCD  A B C D0642  2 9 5 20000 +1 3 5 40000----------0750  3 12 10 6

依此类推,做完P4→P1,当全部的FINISH都变成true时,就是安全状态。

二:安全状态和不安全状态

2.1概念

如果所有过程有可能完成执行(终止),则一个状态(如上述范例)被认为是安全的。由于系统无法知道什么时候一个过程将终止,或者之后它需要多少资源,系统假定所有进程将最终试图获取其声明的最大资源并在不久之后终止。在大多数情况下,这是一个合理的假设,因为系统不是特别关注每个进程运行了多久(至少不是从避免死锁的角度)。此外,如果一个进程终止前没有获取其它能获取的最多的资源,它只是让系统更容易处理。

基于这一假设,该算法通过尝试寻找允许每个进程获得的最大资源并结束(把资源返还给系统)的进程请求的一个理想集合,来决定一个状态是否是安全的。不存在这个集合的状态都是不安全的。

安全序列是指一个进程序列{P1,…,Pn}是安全的,即对于每一个进程Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj (j < i )当前占有资源量之和。

如果存在一个由系统中所有进程构成的安全序列P1,…,Pn,则系统处于安全状态。安全状态一定是没有死锁发生。

不存在一个安全序列。不安全状态不一定导致死锁

2.2安全性检查

1)设置两个工作向量Work=AVAILABLE;FINISH

(2)从进程集合中找到一个满足下述条件的进程,

FINISH==false;

NEED<=Work;

如找到,执行(3);否则,执行(4)

(3)设进程获得资源,可顺利执行,直至完成,从而释放资源。

Work=Work+ALLOCATION;

Finish=true;

GOTO 2

(4)如所有的进程Finish= true,则表示安全;否则系统不安全。

 

三:算法实现

3.1流程图

3.2代码实现

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482013.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用10000个电极窃听大脑

来源&#xff1a;大数据文摘作者&#xff1a;BARUN DUTTA原文标题&#xff1a;EAVESDROPPING ON THE BRAIN WITH 10,000 ELECTRODES让我们想象一台由 860 亿个交换机组成的计算机&#xff1a;其通用智能足以构建一个航天文明——但重量仅为1.2公斤&#xff0c;仅消耗20 瓦的功率…

四项研究,人工智能助力观测检测技术

来源&#xff1a;ScienceAI编辑&#xff1a;萝卜皮目录研究人员使用机器学习来加快微塑料的计数科学家利用人工智能增强 X 射线数据分析从显微镜图像中提取特征的弱监督机器学习模型两体微透镜系统中普遍存在的统一简并研究人员使用机器学习来加快微塑料的计数微塑料无处不在—…

电脑恢复删除文件及注册表实现

QUESTION:电脑恢复删除文件及注册表实现 目录 QUESTION:电脑恢复删除文件及注册表实现 ANWSER: 一&#xff1a;恢复文件 二&#xff1a;修复注册表 ANWSER: 一&#xff1a;恢复文件 在删除了一些C盘的文件后&#xff0c;导致电脑一些设置不能使用&#xff0c;出现文件的…

图灵测试是人工智能的标准吗?

来源&#xff1a;赛先生编者按科学就是一个可以被证伪的学说。任何一个科学论述&#xff0c;都要能够被实验检验。比如说&#xff0c;要科学地解释定义什么是自我意识&#xff0c;其本质就是设计一个实验。比如观察动物在镜子里看到自己时候的行为&#xff0c;是寻找镜子后面的…

科学家在类脑芯片上实现类似LSTM的功能,能效高1000倍

来源&#xff1a;机器学习研究组订阅格拉茨技术大学的计算机科学家在 Nature 子刊上发表的一篇论文表明&#xff0c;他们找到了一种在神经形态芯片上模拟 LSTM 的方案&#xff0c;可以让类脑神经形态芯片上的 AI 算法能效提高约 1000 倍。随着智能手机的普及&#xff0c;手机游…

人类为什么活得这么累?Nature论文解开谜底:人总是选择做加法来解决问题

来源&#xff1a;【iNature】想象一座由乐高积木制成的桥。一侧有三个支撑件&#xff0c;另外两个。你将如何稳定这座桥&#xff1f;一项新的研究表明&#xff0c;大多数人会添加一块&#xff0c;这样每边都有三个支撑。但是为什么不移除一块&#xff0c;让每一侧都有两个支撑呢…

研究速递:使用AI应对腐败的潜力和风险

来源&#xff1a;Peter东腐败是当今社会面临的一大顽疾&#xff0c;近年来&#xff0c;已有一些尝试&#xff0c;通过人工智能的方法应对腐败。自然机器智能的观点论文&#xff1a;“使用人工智能来对抗腐败的前景和危险”&#xff0c;指出相比自上而下的使用AI应对腐败&#x…

Python中出现:RunTimeError:implement_array_function method already has a docstring.异常解决

QUESTON:Python中出现:RunTimeError:implement_array_function method already has a docstring.异常解决 ANSWER: 在网上查了一上午&#xff0c;发现写的在我这都没有解决问题&#xff0c;于是我费尽心机自己动手解决。 我在cmd命令行将本机上的numpy卸载后&#xff0c;重新…

谷歌背后的数学

来源&#xff1a;卢昌海作者&#xff1a;赛先生1引言在如今这个互联网时代&#xff0c; 有一家公司家喻户晓——它自 1998 年问世以来&#xff0c; 在极短的时间内就声誉鹊起&#xff0c; 不仅超越了所有竞争对手&#xff0c; 而且彻底改观了整个互联网的生态。这家公司就是当今…

梅宏院士:如何构造人工群体智能?| 智源大会特邀报告回顾

来源&#xff1a;智源社区导读&#xff1a;在自然界当中&#xff0c;群体智能广泛存在&#xff0c;诸如蜂群、蚁群以及鱼群的聚集。而从宏观上说&#xff0c;人类社会的不断发展和演化也是一种群体智能现象&#xff0c;绝大多数文明成果都是人类个体在长期群体化、社会化的生产…

Maven:构建web工程出现Failed to execute goal org.apache:maven-archetype-plugin:3.1.1:generate (default-cli)

QUESTION:Maven:构建web工程出现Failed to execute goal org.apache:maven-archetype-plugin:3.1.1:generate (default-cli) ANSWER: 在无意间删除了一个工程后&#xff0c;重新构建web工程时出现该问题&#xff0c;一时间煞费苦心&#xff0c;看了好多都是说jre路径问题&…

菲尔兹奖得主丘成桐院士:数学之美与应用

来源&#xff1a;微信公众号&#xff1a;全景式数学丘成桐院士自然界的美是研究基础数学的灵感来源&#xff0c;几何学有着非常漂亮的理论和重要的应用。丘成桐院士带领学生发展的计算共形几何学&#xff0c;在现代工程、医学图像等中发挥着巨大的作用。从数学的角度&#xff0…

Maven:解决jar包冲突和企业开发常用编写

QUESTION:Maven:解决jar包冲突和企业开发常用编写 目录 QUESTION:Maven:解决jar包冲突和企业开发常用编写 ANSWER&#xff1a; 一&#xff1a;Maven的作用 二&#xff1a;解决jar包冲突&#xff1a; 三&#xff1a;版本锁定&#xff1a; ANSWER&#xff1a; 一&#xff…

SSM:Maven整合ssm时的步骤

QUESTION:SSM:Maven整合ssm时的步骤 目录 QUESTION:SSM:Maven整合ssm时的步骤 ANSWER: ANSWER: 工程结构&#xff1a; 1.在新建的web工程中&#xff0c;pom.xml文件中导入以下坐标&#xff1a; <properties><project.build.sourceEncoding>UTF-8</project.bu…

日研究称小行星样本含多种氨基酸,系首次在地球外确认氨基酸存在

来源&#xff1a;彭拜新闻当地时间6月6日&#xff0c;有日本政府相关人士表示&#xff0c;日本宇宙航空研究开发机构&#xff08;JAXA&#xff09;在“隼鸟2号”小行星探测器带回的岩石样本中&#xff0c;发现了超过20种氨基酸。这是首次在地球以外确认氨基酸的存在。是小行星“…

Maven:私服Nexus的安装

QUESTION:Maven:私服Nexus的安装 目录 QUESTION:Maven:私服Nexus的安装 ANWSER: 1.1 简介&#xff1a; 1.2 下载&#xff1a; 1.3 配置nexus 1.4 nexus测试 1.5 安装并启动nexus 1.6 nexus启动失败处理 ANWSER: 1.1 简介&#xff1a; Nexus 是Maven仓库管理器&#x…

译科技|人工智能进化——那些不得不面对的局限性

来源&#xff1a;The Next Web作者&#xff1a;Charles Simon翻译&#xff1a;王忠伟审校&#xff1a;黄玉叶"认清现实&#xff1a;AI虽不完美&#xff0c;但它的本事令人印象深刻。"从医学成像、语言翻译到面部识别、自动驾驶汽车&#xff0c;人工智能的案例无处不在…

Maven:导入Oracle的jar包时出现错误

QUESTION:Maven&#xff1a;导入Oracle的jar包时出现错误 目录 QUESTION:Maven&#xff1a;导入Oracle的jar包时出现错误 ANSWER: 一&#xff1a;问题分析 二&#xff1a;解决方案 ANSWER: 一&#xff1a;问题分析 一开始我在导入oracle时以为是编译器的原因&#xff0c;于…

“数字孪生”十问:从概念到应用

来源&#xff1a;北京航空航天大学 自动化科学与电气工程学院 数字孪生研究组本文对以下十个问题进行了深入分析与思考&#xff0c;以期抛砖引玉&#xff0c;为研究者更好理解数字孪生&#xff0c;为决策者理性和正确对待数字孪生&#xff0c;为实践者更好落地应用数字孪生提供…

图灵奖得主 Adi Shamir最新理论,揭秘对抗性样本奥秘 | 智源大会特邀报告回顾...

来源&#xff1a; 智源社区导读&#xff1a;为什么模型会将「猫」识别成「牛油果酱」&#xff0c;将「猪」识别成「飞机」&#xff1f;要回答这个问题&#xff0c;就涉及到对抗性样本&#xff08;Adversarial examples&#xff09;。对抗性样本指在原始样本添加一些人眼无法察觉…