题目
假定 系统中有4个进程P1、P2、P3、P4和3类资源R1、R2、R3(资源数量分别为9、3、6),在t0时刻的资源分配[1]情况如下表所示。资源情况Max Allocation need available进程 R1 R2 R3 R1 R2 R3 R1 R2 R3 R1 R2 R3P1 3 2 2 1 0 0 2 2 2 1 1 2P2 6 1 3 5 1 1 1 0 2P3 3 1 4 2 1 1 1 0 3P4 4 2 2 0 0 2 4 2 0试问: (1)t0时刻是否安全? (2)P2发出请求向量request2(1,0,1),系统能否将资源分配给它?(3)在P2申请资源后,若P1发出请求向量request1(1,0,1),系统能否将资源分配给它?(4)在P1申请资源后,若P3发出请求向量request3(0,0,1),系统能否将资源分配给它?
假定 系统中有4个进程P1、P2、P3、P4和3类资源R1、R2、R3(资源数量分别为9、3、6),在t0时刻的资源分配[1]情况如下表所示。
资源情况





Max Allocation need available
进程 R1 R2 R3 R1 R2 R3 R1 R2 R3 R1 R2 R3

P1 3 2 2 1 0 0 2 2 2 1 1 2
P2 6 1 3 5 1 1 1 0 2

P3 3 1 4 2 1 1 1 0 3
P4 4 2 2 0 0 2 4 2 0

试问: (1)t0时刻是否安全? (2)P2发出请求向量request2(1,0,1),系统能否将资源分配给它?(3)在P2申请资源后,若P1发出请求向量request1(1,0,1),系统能否将资源分配给它?(4)在P1申请资源后,若P3发出请求向量request3(0,0,1),系统能否将资源分配给它?
题目解答
答案
(1)在t0时刻存在一个安全序列{P2,P1,P3,P4},故系统是安全的。
(2) 可以找到一个安全序列{ P2,P1,P3,P4},故系统是安全的,可以将P2所申请的资源分配给它。
(3) P1阻塞。
(4) 分配将被撤销,进程P3阻塞
解析
步骤 1:确定t0时刻是否安全
在t0时刻,我们需要检查是否存在一个安全序列,即一个进程序列,使得每个进程在获得其需要的资源后,系统仍然处于安全状态。安全状态意味着系统能够为所有进程分配其需要的资源,而不会导致死锁。
步骤 2:检查P2发出请求向量request2(1,0,1)后是否安全
在P2发出请求向量request2(1,0,1)后,我们需要检查系统是否仍然处于安全状态。如果系统仍然安全,那么可以将资源分配给P2。
步骤 3:检查P1发出请求向量request1(1,0,1)后是否安全
在P1发出请求向量request1(1,0,1)后,我们需要检查系统是否仍然处于安全状态。如果系统仍然安全,那么可以将资源分配给P1。
步骤 4:检查P3发出请求向量request3(0,0,1)后是否安全
在P3发出请求向量request3(0,0,1)后,我们需要检查系统是否仍然处于安全状态。如果系统仍然安全,那么可以将资源分配给P3。
在t0时刻,我们需要检查是否存在一个安全序列,即一个进程序列,使得每个进程在获得其需要的资源后,系统仍然处于安全状态。安全状态意味着系统能够为所有进程分配其需要的资源,而不会导致死锁。
步骤 2:检查P2发出请求向量request2(1,0,1)后是否安全
在P2发出请求向量request2(1,0,1)后,我们需要检查系统是否仍然处于安全状态。如果系统仍然安全,那么可以将资源分配给P2。
步骤 3:检查P1发出请求向量request1(1,0,1)后是否安全
在P1发出请求向量request1(1,0,1)后,我们需要检查系统是否仍然处于安全状态。如果系统仍然安全,那么可以将资源分配给P1。
步骤 4:检查P3发出请求向量request3(0,0,1)后是否安全
在P3发出请求向量request3(0,0,1)后,我们需要检查系统是否仍然处于安全状态。如果系统仍然安全,那么可以将资源分配给P3。