某系统有 A 、 B 、 C 类型的3种资源,在 TO 时刻进程P1、P2、P3、P4 对资源的占用和需求情况见下表。此刻系统可用资源向量为(2,1,2)。问: 已分配资源 Allocation 最大需求量 max 资源 请求进程 A B B C A 0 2 (1)判定此刻系统的安全性。如果是安全的,写出安全序列,如果是不安全的,写出参与死锁的进程。(6分) (2)如果此时P2发出资源请求向量 Request (1,0.1),可以分配资源给P2进程吗?说明你所采用策略的原因。(7分) (2)如果此时P1发出资源请求向量 Request (1,0,1),可以分配资源给P2进程吗?说明你所采用策略的原因。(7分) 3 以3凡
时间: 2023-06-08 22:07:32 浏览: 101
新P1P2P3P4实验室一般规范.pdf
问的方式回答:
(1) 首先计算出每个进程的还需资源向量 Need = Max - Allocation,得到:
进程 Need Allocation Max
P1 1 1 0 1 2 1 2
P2 1 0 1 1 1 2 2
P3 0 1 0 1 1 3 1
P4 2 0 2 0 2 2 2
然后计算出系统可用资源 Vector = Available - Allocation - Need,得到:
进程 Need Allocation Max Vector
P1 1 1 0 1 2 1 2 0 0 0
P2 1 0 1 1 1 2 2 0 0 0
P3 0 1 0 1 1 3 1 0 0 0
P4 2 0 2 0 2 2 2 0 0 0
可以看到,所有进程的还需资源向量均可以被满足,因此系统是安全的。
安全序列为:P1 -> P3 -> P2 -> P4。
(2) P2的资源请求向量 Request (1,0,1) 可以被满足,因为此时系统可用资源 Vector = Available - Allocation - Need = (1,1,1) >= Request,且分配资源后系统仍满足安全性。
策略原因:采用银行家算法的安全检查流程,即先试探性地分配资源给进程,然后计算出每个进程的新还需资源向量及系统的新可用资源向量,判断系统是否安全。
(3) P1的资源请求向量 Request (1,0,1) 不能被满足,因为此时系统可用资源 Vector = Available - Allocation - Need = (0,1,1) < Request,且分配资源后系统不满足安全性。如果分配资源给P1进程,那么系统可用资源 Vector 将为 (1,1,0),此时只能分配给P3进程,之后系统只有(2,1,0)的可用资源了,P2进程也不能分配资源,因此进入死锁状态。
策略原因:采用银行家算法的请求检查流程,即先试探性地分配资源给进程,然后查询分配资源后系统是否仍能保持安全状态,如果是,则正式分配资源,否则不分配。如果不采用这一策略,在资源短缺的情况下容易导致死锁。
阅读全文