全球旧事资料 分类
足够的资源满足Pi的申请而使进程Pi等待。(3)系统试探地把资源分配给进程Pi并修改如下数据结构中的值:AvailableAvailableRequestiAllocatio
iAllocatio
iRequestiNeediNeediRequesti(4)系统执行安全算法,检查此次资源分配后,系统是否处于安全状态。若是则系统才真正将资源分配给进程Pi以完成本次分配;若不是则系统将试探分配作废,恢复原来的资源分配状态,让进程Pi等待。系统所执行的安全性算法描述如下:(1)设置两个向量:Work和Fi
ish。其中Work表示系统可提供给进程继续运行的各类资源数,初始时WorkAvailable;Fi
ish表示系统是否有足够的资源分配给进程并使之运行结束,初始时Fi
ishifalse,当有足够资源分配给进程Pi时,令Fi
ishitrue。(2)从进程集合中找到一个能满足下述条件的进程:①Fi
ishifalse②Needi≤Work若能找到这样的进程则执行步骤(3),否则跳过步骤(3)而执行步骤(4)。
2
f(3)当进程Pi获得资源后可顺利执行直到完成,然后释放分配给它的资源,并做如下工作:①WorkWorkAllocatio
②Fi
ishitrue最后转去执行步骤(2)。(4)若所有进程的Fi
ishi的值都为true,则说明系统处于安全状态;否则系统处于不安全状态。
例1.某系统有A、B、C类型的3种资源,在T0时刻进程P1、P2、P3、P4对资源的占用和需求情况见下表。此刻系统可用资源向量为(2,1,2)。问:
资源请求进程P1P2P2P4最大需求量max已分配资源Allocatio

A3634
B2112
C2342
A1420
B0110
C0112
(1)将系统中各种资源总数和进程对资源的需求数目用向量或矩阵表示出来。(2)判定此刻系统的安全性。如果是安全的,写出安全序列,如果是不安全的,写出参与死锁的进程。(3)如果此时P1和P2均再发出资源请求向量Request(1,0,1),为了保持系统安全性,应该如何分配资源给这两个进程?说明你所采用策略的原因。(4)如果(3)中的请求都立刻满足后,系统此刻是否处于死锁状态?最终能否进入死锁状态?若能,说明参与死锁的进程,若不能,说明原因。解:(1)系统资源总数向量=availableAllocatio
=(2,1,2)+(7,2,4)=(9,3,6)进程对资源的需求矩阵
322
eedmax-Allocatio
613314422142001100112221420022230
3
f(2)采用银行家算法进行计算步骤如下:work212fi
ishfalsefalsefalsefalse①因为:
eed2available,故系统可以满足P2对资源的请求,将资源分配给P2后,P2可执行完成,然后释放它所占有的资源。因此,fi
ish2trueworkworkallocatio
22124116r
好听全球资料 返回顶部