操作系统在管理三种资源类型 X、Y 和 Z 到三个进程 P0、P1 和 P2 的分配时使用银行家算法来避免死锁。下表给出了当前的系统状态。这里,Allocation 矩阵显示当前分配给每个进程的每种类型的资源数,Max 矩阵显示每个进程在执行过程中所需的每种类型的最大资源数。
尚有 3 个 X 型单元、2 个 Y 型单元和 2 个 Z 型单元。该系统是
目前处于安全状态。考虑以下对额外资源的独立请求
当前状态:
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
以下哪一项是正确的?
(A)只允许 REQ1。
(B)只允许 REQ2。
(C) REQ1 和 REQ2 都可以被允许。
(D)不允许 REQ1 和 REQ2答案:(乙)
说明:这是当前的安全状态。
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 是正确的选择。
如果您发现上面的帖子有任何错误,请在下面发表评论。
这个问题的测验