操作系统在管理三个资源类型X,Y和Z向三个进程P0,P1和P2的分配时,使用Banker算法来避免死锁。下表给出了当前系统状态。此处,分配矩阵显示分配给每个进程的每种类型的当前资源数量,而最大矩阵显示每个进程在执行过程中所需的每种类型的最大资源数量。
X型有3个单元,Y型有2个单元,Z型有2个单元。该系统是
目前处于安全状态。请考虑以下独立请求,以获取更多资源:
当前状态:
REQ1: P0 requests 0 units of X,
0 units of Y and 2 units of Z
REQ2: P1 requests 2 units of X,
0 units of Y and 0 units of Z
以下哪一项是TRUE?
(A)仅允许REQ1。
(B)仅允许REQ2。
(C) REQ1和REQ2都可以被允许。
(D)不允许REQ1和REQ2答案: (B)
说明:这是当前的安全状态。
AVAILABLE | X=3, Y=2, Z=2 | |
MAX | ALLOCATION | |
X Y Z | X Y Z | |
P0 | 8 4 3 | 0 0 1 |
P1 | 6 2 0 | 3 2 0 |
P2 | 3 3 3 | 2 1 1 |
现在,如果请求REQ1被允许,则状态将变为:
AVAILABLE | X=3, Y=2, Z=0 | ||
MAX | ALLOCATION | NEED | |
X Y Z | X Y Z | X Y Z | |
P0 | 8 4 3 | 0 0 3 | 8 4 0 |
P1 | 6 2 0 | 3 2 0 | 3 0 0 |
P2 | 3 3 3 | 2 1 1 | 1 2 2 |
现在,借助当前的可用性,我们可以满足P1的需求。状态将变为:
AVAILABLE | X=6, Y=4, Z=0 | ||
MAX | ALLOCATION | NEED | |
X Y Z | X Y Z | X Y Z | |
P0 | 8 4 3 | 0 0 3 | 8 4 0 |
P1 | 6 2 0 | 3 2 0 | 0 0 0 |
P2 | 3 3 3 | 2 1 1 | 1 2 2 |
由于缺乏Z资源,因此由于可用性的原因,无法满足P0或P2的需求。
因此,系统将陷入僵局。
⇒我们不允许REQ1。
现在,在给定的安全状态下,如果我们接受REQ2:
AVAILABLE | X=1, Y=2, Z=2 | ||
MAX | ALLOCATION | NEED | |
X Y Z | X Y Z | X Y Z | |
P0 | 8 4 3 | 0 0 1 | 8 4 2 |
P1 | 6 2 0 | 5 2 0 | 1 0 0 |
P2 | 3 3 3 | 2 1 1 | 1 2 2 |
有了这个可用性,我们将为P1提供服务(也可以为P2提供服务)。因此,状态为:
AVAILABLE | X=6, Y=4, Z=2 | ||
MAX | ALLOCATION | NEED | |
X Y Z | X Y Z | X Y Z | |
P0 | 8 4 3 | 0 0 1 | 8 4 2 |
P1 | 6 2 0 | 5 2 0 | 0 0 0 |
P2 | 3 3 3 | 2 1 1 | 1 2 2 |
凭借当前的可用性,我们为P2服务。状态变为:
AVAILABLE | X=8, Y=5, Z=3 | ||
MAX | ALLOCATION | NEED | |
X Y Z | X Y Z | X Y Z | |
P0 | 8 4 3 | 0 0 1 | 8 4 2 |
P1 | 6 2 0 | 5 2 0 | 0 0 0 |
P2 | 3 3 3 | 2 1 1 | 0 0 0 |
最后,我们为P0服务。现在状态变为:
AVAILABLE | X=8, Y=5, Z=4 | ||
MAX | ALLOCATION | NEED | |
X Y Z | X Y Z | X Y Z | |
P0 | 8 4 3 | 0 0 1 | 0 0 0 |
P1 | 6 2 0 | 5 2 0 | 0 0 0 |
P2 | 3 3 3 | 2 1 1 | 0 0 0 |
这样获得的状态是安全状态。 ⇒REQ2可以被允许。
因此,只能允许REQ2。
因此,B是正确的选择。
如果您在以上文章中发现任何错误,请在下面发表评论。
这个问题的测验