银行家算法习题Word格式文档下载.docx
- 文档编号:13251697
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:11
- 大小:77.61KB
银行家算法习题Word格式文档下载.docx
《银行家算法习题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《银行家算法习题Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
2)最大需求矩阵Max。
3)分配矩阵Allocation。
4)需求矩阵Need。
银行家算法如下:
设Requesti是进程Pi的请求向量,Requesti(j)=k表示进程Pi请求分配Rj类资源k个,当Pi发出资源请求后,系统按照下列步骤进行检查。
(1)若RequestsNeed,贝U执行步骤
(2);
否则系统会因为它所需要的资源数已超过它要求的最大值而认为出错。
(2)若RequestsAvailable,贝U执行步骤(3);
否则系统会因为系统中尚无足够的资源满足Pi的申请而使进程Pi等待。
(3)系统试探地把资源分配给进程Pi并修改如下数据结构中的值:
Available=Available-Requesti
Allocationi=Allocationi+Requesti
Needi=Needi-Requesti
(4)系统执行安全算法,检查此次资源分配后,系统是否处于安全状态。
若是则系统才真正将资源分配给进程Pi以完成本次分配;
若不是则系统将试探分配作废,恢复原来的资源分配状态,让进程Pi等待。
系统所执行的安全性算法描述如下:
(1)设置两个向量:
Work和Finish。
其中Work表示系统可提供给进程继续运行的各类资源数,初始时Work=Available;
Finish表示系统是否有足够的资源分配给进程并使之运行结束,初始时Finish(i)=false,当有足够资源分配给进程Pi时,令Finish(i)=true。
(2)从进程集合中找到一个能满足下述条件的进程:
1Finish(i)=false
2NeediwWork
若能找到这样的进程则执行步骤(3),否则跳过步骤(3)而执行步骤(4)。
(3)当进程Pi获得资源后可顺利执行直到完成,然后释放分配给它的资源,并做如下工作:
1Work=Work+Allocation
2Finish(i)=true
最后转去执行步骤
(2)。
(4)若所有进程的Finish(i)的值都为true,则说明系统处于安全状态;
否则系统处于不安全状态。
例1.某系统有A、B、C类型的3种资源,在TO时刻进程P1、P2、P3、P4对资源的占用和需求情况见下表。
此刻系统可用资源向量为(2,1,2)。
问:
资源
请求进程
最大需求量max
已分配资源Allocation
ABC
P1
P2
P4
322
613
314
422
100
411
211
002
(1)将系统中各种资源总数和进程对资源的需求数目用向量或矩阵表示出来。
(2)判定此刻系统的安全性。
如果是安全的,写出安全序列,如果是不安全的,写出参与死锁的进程。
(3)如果此时P1和P2均再发出资源请求向量Request(1,0,1),为了保持系统安全性,应该如何分配资源给这两个进程?
说明你所采用策略的原因。
(4)如果(3)中的请求都立刻满足后,系统此刻是否处于死锁状态?
最终能否进入死锁状态?
若能,说明参与死锁的进程,若不能,说明原因。
解:
(1)系统资源总数向量=available+Allocation
=(2,1,2)+(7,2,4)=(9,3,6)进程对资源的需求矩阵
r■>
f>
r、
3
22
222
need=max—Allocation=6
13
—
=
202
14
103
4
420
<
J
(2)采用银行家算法进行计算步骤如下:
work=(2,1,2)finish=(false,false,false,false)
1因为:
need[2]<
available,故
系统可以满足P2对资源的请求,将资源分配给P2后,P2可执行完成,然后释放它所占有的资源。
因此,
finish[2]=true;
work=work+allocation[2]=(2,1,2)+(4,1,1)=(6,2,3)
2此时,need[1]<
work,故:
P1可执行完成。
finish[1]=true;
work=work+allocation[1]=(6,2,3)+(1,0,0)=(7,2,3)
3此时,need[3]<
P3可执行完成。
finish[3]=true;
work=work+allocation[3]=(7,2,3)+(2,1,1)=(9,3,4)
4此时,need[4]<
P4可执行完成。
finish[4]=true;
work=work+allocation[4]=(9,3,4)+(0,0,2)=(9,3,6)
结论:
系统至少可以找到一个安全的执行序,如(P2,P1,P3,P4)可使各进程正常运行终结。
(3)系统不能将资源分配给进程P1,因为虽然可利用资源还可以满足进程P1
现在的需求,但是一旦分配给进程P1后,就找不到一个安全执行的序列保证各
进程能够正常运行终结。
所以进程P1应该进入阻塞状态。
(4)系统满足进程P1和P2的请求后,没有立即进入死锁状态,因为这时所有进程没有提出新的资源申请,全部进程均没有因资源没有得到满足而进入阻塞状态。
只有当进程提出资源申请且全部进程都进入阻塞状态时,系统才处于死锁状态。
但最终会进入死锁状态。
例2:
某系统有同类资源m个,n个并发进程可共享该类临界资源。
求:
每个进程最多可申请多少个该类临界资源,保证系统一定不会发生死锁。
解:
设每个进程最多申请该类资源的最大量为x。
每个进程最多申请x个资源,则n个进程最多同时申请的该类临界资源数为:
n*x。
为保证系统不会发生死锁,应满足下列不等式:
n(x-1)+1<
m(*)
则系统一定不会发生死锁。
这是因为进程最多申请x个资源,最坏的情况是每个进程都已得到了(x-1)个资源,现均申请要最后一个资源。
只要系统至少还有一个资源就可使其中一个或几个进程得到所需的全部资源,在它们执行结束后归还的资源可供其他进程使用,因而不可以发生死锁。
解不等式(*),可得:
x<
1+[(m-1)/n]
即:
x的最大值为1+[(m-1)/n]。
因而,当每个进程申请资源的最大数值为1+[(m-1)/n]时,系统肯定不会发生死锁。
例3:
设系统中有3中类型的资源(A,B,C)和5个进程P1、P2、P3、P4、
P5,A类资源的数目为17,B类资源的数目为5,C类资源的数目为20。
在To时刻系统状态如下表所示。
系统米用银行家算法实施死锁避免策略。
资源情况
Max
Allocation
Available
进程
A
B
C
5
9
2
1
233
6
P3
11
P5
(1)To时刻是否为安全状态?
若是,给出安全序列。
(2)若在To时刻进程P2请求资源(0,3,4),是否能实施资源分配?
为什么?
(3)在
(2)的基础上,若进程P4请求资源(2,0,1),是否能实施资源分配?
(1)由题目所给出的最大资源需求量和已分配的资源数量,可以计算出To时刻各进程的资源需求量Need,Need=Max-Allocation,利用银行家算法对To时刻的资源分配情况进行分析,可得此时的安全性分析情况,如下表:
Work
Need
Work+Allocation
Finish
110
314
547
true
221
204
7411
006
405
11416
134
402
15418
347
212
17520
从To的安全性分析中可以看出,存在一个安全序列{P5、P4、P3、P2、P1},故To时刻的状态是安全的。
(6分)
(2)若在To时刻进程P2请求资源(0,3,4),因请求资源数(0,3,4)大于剩余资源数(2,3,3),所以不能分配。
(2分)
(3)在
(2)的基础上,若进程P4请求资源(2,0,1),按银行家算法进行检查:
P4请求资源(2,0,1)<
=P4需求资源(2,2,1)
P4请求资源(2,0,1)<
=剩余资源数(2,3,3)
试分配并修改相应的数据结构,由此形成的资源分配情况如下表所示:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行家 算法 习题