问答题 某系统有R1、R2和R3三种资源,在T0时刻P1、P2、P3和P4四个进程对资源的占用和需求情况如下表所示,此时系统的可用资源向量为(2,1,2)。
进程 最大资源需求量 已分配资源数量
R1 R2 R3 R1 R2 R3
P1 3 2 2 1 0 0
P2 6 1 3 4 1 1
P3 3 1 4 2 1 1
P4 4 2 2 0 0 2
试问:
(1)系统是否处于安全状态?如安全,请给出一个安全序列。
(2)如果此时P1和P2均发出资源请求向量Request(1,0,1),为了保证系统的安全性,应该如何分配资源给这两个进程?说明你所采用的策略的原因。
(3)如果(2)中两个请求立即得到满足,系统此刻是否处于死锁状态?
【正确答案】本题考查采用银行家算法避免死锁。
(1)利用安全性算法对T0时刻的资源分配情况进行分析,可得到如下表所示的安全性检测情况。可以看出,此时存在一个安全序列{P2,P3,P4,P1},故该系统是安全的。
进程 Work Need Allocation Work+Allocation Finish
R1 R2 R3 R1 R2 R3 R1 R2 R3 R1 R2 R3
P2 2 1 2 2 0 2 4 1 1 6 1 3 True
P3 6 2 3 1 0 3 2 1 1 8 3 4 True
P4 8 3 4 4 2 0 0 0 2 8 3 6 True
P1 8 3 6 2 2 2 1 0 0 9 3 6 True
(2)若此时P1发出资源请求Request1(1,0,1),按银行家算法进行检查: Request1(1,0,1) ≤Need1(2,2,2) Request1(1,0,1) ≤Available(2,1,2) 试分配并修改相应的数据结构,由此形成的资源分配情况如下表所示。
进程 Allocation Max Available
R1 R2 R3 R1 R2 R3 R1 R2 R3
P1 1 0 0 2 2 2 1 1 1
P2 5 1 2 1 0 1
P3 2 1 1 1 0 3
P4 0 0 2 4 2 0
(3)如果(2)中两个请求立即得到满足,此刻系统并没有立即进入死锁状态,因为这时所有进程没有提出新的资源申请,全部进程均没有因资源请求没有得到满足而进入阻塞状态。只有当进程提出资源请求,且全部进程都进入阻塞状态时,系统才处于死锁状态。
【答案解析】