导航:首页 > 源码编译 > 银行家算法问题详解

银行家算法问题详解

发布时间:2023-08-05 10:23:00

⑴ 操作系统(死锁避免)----银行家算法解题

死锁:是指两个以上的进程都因要求对方已经占有的资源,导致无法运行下去的现象,死锁是系统的一种出错状态,不仅浪费大量的系统资源,甚至会导纤贺余致整个系统的崩溃,所以死锁是尽量预防和避免的。

产生死锁的四个条件:

死锁的处理

银行家算法是死锁避免的重要算法。

银行家算毁滚法:资源==钱;收回资源==收回贷款;收不回资源==不会放贷;

例题:假设系统中有三类互斥资源R1,R2,R3。可用资源分别是9,8,5.在T0时刻系统有P1,P2,P3,P4,P5五个进程,这些进程最大的需求和已分配的资源如下所示,如果按_执行,那么系统的状态是安全的。

解:第一步:根据可用资源,可以求得剩余资源。

R1=9-(1+2+2+1+1)=2

R2=8-(2+1+1+2+1)=1

R3=5-(1+1+0+0+3)=0

第二拍纳步:根据剩余资源求得还需要的资源数。

公式:还需资源(Need)=最大需求(Max)-已分配资源(Allocation)。

第三部,根据剩余资源数,求出安全序列。

根据剩余资源可得,p2可以执行(条件:每个值都必须≦剩余资源)

由此可见安全序列为P2-->p4-->p5-->p1-->p3。

其实安全序列不是唯一的,这是为什么呢?

大家可以看出来,现有资源要大于需要资源的情况下是有多种选择的,因此安全序列不唯一。

⑵ 银行家算法得出的安全序列有顺序吗如{ p3,p0,p4 ,p2, p1}和{ p3,p0,p4 ,p1, p2}是一样的吗

不一样
银行家算法假定前提如下:
p0 ~ p 4 各掌握有银行家的若干资源,但要求完成他们的目标,分别还需要请求若干资源。
现在,银行丛做塌家已经付出很多资源,手里资源不多。而pX 们另外需求的资源也是大小不一的。
而一旦银行家所有资源支出后,pX中仍然没有谁完成任务,这就死锁了(每个进程都把握一部分资源,并还在要资源,而资源已经木有了)
==========================
现在,算法得出这样一条顺序,先优先供应渗圆p3,等p3完成他的线程后,p3会释放所占有的资源。银行家(系统)利用p3所有的资源和自己手里剩余的资源按顺序供应p0,p4 等等。
现在假定 供应完 p4后,银行家手中握有资源 10单位
p1 总共需要胡胡20单位才能完成他的进程,而p1手中现有5单元
p2 总共需要10单位才能完成他的进程,而p2手中已经有了8单元了
请问,系统应该先供应哪个线程?
答案必然是先p2再p1
因为使用2资源供应完p2(10单位才能完成,已有8单位,还要2单位),p2完成任务后,释放所有资源,系统累计资源才有 10 - 2 + 10 = 18 单位的资源 ,才能满足p1 的 15( = 20 -5 )单位资源的请求。
而若反之, 所有资源投入p1 , p1 完成进度 15 / 20 p2 完成进度 8 / 10 这就彻底死了
所以 xxxxx p2 p1 能活, xxxxx p1 p2 会死

特别说明的是,银行家算法可以得到不止一条安全顺序。能被银行家证明可行的算法都是死不了的算法

⑶ 操作系统-银行家算法问题

1)剩余:A:1 B:5 C:2 D:0
因为P1已经满足最大需求数,则P1资源最终是可回收,则可看做剩余:A:1 B:5 C3 D:2

2)是安全状态;因为按照剩余:A:1 B:5 C3 D:2(此时P1已经结束)分别按照顺序满足各进程的最大需求是可以把全部进程完成的(顺序可为:P3 --> P4 --> P5 --> p2)
3)系统会去满足;若此时去满足,则剩余资源为:A:1 B:1 C1 D:2
此时,各进程的状态:
已占有资源 最大需求数
A B C D A B C D
P1 0 0 0 0 0 0 1 2 (已结束)
P2 1 4 2 0 1 7 5 0
P3 1 3 5 4 2 3 5 6
P4 0 6 3 2 0 6 5 2
P5 0 0 1 4 0 6 5 6
按照各进程状态以及剩余资源,可以知道之后P3,即可回收已分配的资源,即处安全状态。

这是本人的理解,如有错,请包涵指出。

⑷ 操作系统银行家算法题

解:(1)利用银行家算法对此时刻的资源分配情况进行分析,可得此时刻的安全性分析情况:
Work Need Allocation Work+Allocation Finish
P0 1 6 2 2 0 0 1 2 0 0 3 2 1 6 5 4 true
P3 1 6 5 4 0 6 5 2 0 3 3 2 1 9 8 6 true
P4 1 9 8 6 0 6 5 6 0 0 1 4 1 9 9 10 true
P1 1 9 9 10 1 7 5 0 1 0 0 0 2 9 9 10 true
P2 2 9 9 10 2 3 5 6 1 3 5 4 3 12 14 14 true
从上述分析中可以看出,此时存在一个安全序列{P0,P3,P4,P1,P2},故该状态是安全的。
(2)P2提出请求Request2(1,2,2,2),按银行家算法进行检查:
·Request2(1,2,2,2) ≤Need(2,3,5,6)
·Request2(1,2,2,2) ≤Available(1,6,2,2)
·试分配并修改相应数据结构,资源分配情况如下:
Allocation Need Available
P0 0 0 3 2 0 0 1 2 0 4 0 0
P1 1 0 0 0 1 7 5 0
P2 2 5 7 6 1 1 3 4
P3 0 3 3 2 0 6 5 2
P4 0 0 1 4 0 6 5 6

·再利用安全性算法检查系统是否安全,可用系统资源Available(0,4,0,0)已不能满足任何进程的需要,故系统进入不安全状态,此时系统不能将资源分配给P2。

阅读全文

与银行家算法问题详解相关的资料

热点内容
51单片机程序单步视频 浏览:239
家庭宽带如何连接服务器 浏览:117
汽车高压泵解压 浏览:770
上门正骨用什么app 浏览:758
安卓为什么免费使用 浏览:397
加密货币都有哪些平台 浏览:625
python和matlab难度 浏览:388
python爬虫很难学么 浏览:572
小米解压积木可以组成什么呢 浏览:816
为什么滴滴出行app还能用 浏览:564
怎么升级手机android 浏览:923
php权威编程pdf 浏览:994
扣扣加密技巧 浏览:720
苹果如何创建服务器错误 浏览:497
软考初级程序员大题分值 浏览:475
js压缩视频文件 浏览:580
linux如何通过命令创建文件 浏览:991
应用加密app还能访问应用嘛 浏览:435
安卓怎么用支付宝交违章罚款 浏览:667
php面向对象的程序设计 浏览:506