问答题 某系统有R1、R2、R3 3种资源,在T0时刻P1、P2、P3和P4这4个进程对资源的占用和需求情况见下表,此时系统的可用资源向量为(1,1,2)。
{{B}}在T0时刻P1、P2、P3、P4这4个进程对资源的占用和需求情况{{/B}}
最大资源需求量 已分配资源数量
R1 R2 R3 R1 R2 R3
P1 3 2 2 1 0 0
P2 6 1 3 5 1 1
P3 3 1 4 2 1 1
P4 4 2 2 0 0 2
试问:
问答题 将系统中各种资源总数和此刻各进程对资源的需求数目用向量或矩阵表示出来。
【正确答案】系统中资源总数等于已分配资源数量与可用资源数量之和,因此可以得出系统资源总数向量为(9,3,6)。
已分配资源数量
R1 R2 R3
1 0 0
5 1 1
2 1 1
0 0 2
可用资源数
1 1 2
求出总数
9 3 6
各进程对于各种资源的需求向量等于最大需求资源量与已分配资源量的差,根据题目条件可以得出:
[*]
【答案解析】
问答题 如果此时进程P1和P2均发出资源请求(1,0,1),则为了保证系统的安全性,应该如何分配资源给两个进程?说明所用策略的原因。
【正确答案】若此时P1请求资源Request1(1,0,1),系统按银行家算法进行检查,执行如下操作:
Request1(1,0,1)≤Need1(2,2,2)
Request1(1,0,1)≤Available(1,1,2)
系统假定为P1分配资源,并修改Available、AllocNion1、Need1向量,由此形成的资源变化情况见表。
{{B}}资源变化情况(一){{/B}}
进程 Allocation Need Available
R1 R2 R3 R1 R2 R3 R1 R2 R3
P1 2 0 1 1 2 1 0 1 1
P2 5 1 1 1 0 2
P3 2 1 1 1 0 3
P4 0 0 2 4 2 0
再利用安全性算法检查系统是否安全,可用资源(0,1,1)已经无法满足任何进程,系统进入不安全状态,因此系统不能将资源分配给进程P1。应当撤回资源,修改相应数据结构为初始状态。 若此时进程P2发出资源请求(1,0,1),按银行家算法进行检查: Request2(1,0,1)≤Need2(1,0,2) Request2(1,0,1)≤Available(1,1,2) 系统假定为P2分配资源,并修改Available、Allocation2、Need2向量,由此形成的资源变化情况见下表。
{{B}}资源变化情况(二){{/B}}
进程 Allocation Need Available
R1 R2 R3 R1 R2 R3 R1 R2 R3
P1 1 0 0 2 2 2 0 1 1
P2 6 1 2 0 0 1
P3 2 1 1 1 0 3
P4 0 0 2 4 2 0
再利用安全性算法检查系统是否安全,可得安全性分析结果见下表。
{{B}}安全性分析结果{{/B}}
进程 Work Need Allocation Work+Allocation Finish
R1 R2 R3 R1 R2 R3 R1 R2 R3 R1 R2 R3
P1 0 1 1 0 0 1 6 1 2 6 2 3 True
P2 6 2 3 2 2 2 1 0 0 7 2 3 True
P3 7 2 3 1 0 3 2 1 1 9 3 4 True
P4 9 3 4 4 2 0 0 0 2 9 3 6 True
由结果可知,可以找到一个安全序列{P2,P1,P3,P4},因此系统是安全的,可以将资源分配给P2。
【答案解析】
问答题 若系统运行中出现下表所示的资源分配情况,该系统是否安全?如果进程P2此时提出资源申请(1,2,2,2),系统能否将资源分配给它?为什么?
{{B}}资源分配情况{{/B}}
进程 Allocation Need Available
P0 0 0 3 2 0 0 1 2 1 6 2 2
P1 1 0 0 0 1 7 5 0
P2 1 3 5 4 2 3 5 6
P3 0 3 3 2 0 6 5 2
P4 0 0 1 4 0 6 5 6
【正确答案】利用安全性算法对此刻的资源分配情况进行分析,可得到表所示的安全性检测情况。
{{B}}安全性检测情况{{/B}}
进程 Work Need Allocation Work+Allocation Finish
P0 1 6 2 2 0 0 1 2 0 0 3 2 1 6 5 4 True
P1 1 6 5 4 0 6 5 2 0 3 3 2 1 9 8 6 True
P2 1 9 8 6 0 6 5 6 0 0 1 4 1 9 9 10 True
P3 1 9 9 10 1 7 5 0 1 0 0 0 2 9 9 10 True
P4 2 9 9 10 2 3 5 6 1 3 5 4 3 12 14 14 True
P2提出请求(1,2,2,2),按银行家算法进行检查: Request2(1,2,2,2)≤Need2(2,3,5,6) Request2(1,2,2,2)≤Available2(1,6,2,2) 尝试分配并修改相应数据结构,由此形成的资源分配情况见表。
{{B}}资源分配情况{{/B}}
进程 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
再利用安全性算法检测系统是否安全,当前可利用资源(0,4,0,0)已经不能满足任何进程的需要,系统进入不安全状态,因此此时系统不能分配给P2对应资源,应当撤销试分配,并修改相应数据结构到初始状态。
【答案解析】