🏷️ 知识点:银行家算法

共 9 道相关题目

模拟卷 年第 26 题 操作系统 选择题

死锁与安全状态的关系是( )。

A. 死锁状态有可能是安全状态 B. 安全状态有可能成为死锁状态 C. 不安全状态就是死锁状态 D. 死锁状态一定是不安全状态

银行家算法 死锁的处理方法

[tag_link]

正确答案:D

死锁状态是指系统中多个进程因竞争资源而相互等待,导致所有进程都无法继续执行的状态。

安全状态则是指系统存在至少一个安全序列,能够按照该序列为所有进程分配资源并确保它们顺利完成,从而避免死锁。

分析选项:A项错误,因为死锁状态意味着系统已无法找到安全序列,与安全状态的定义相悖,不可能是安全状态。 B项表述不准确,安全状态本身并不直接等同于死锁状态; 虽然系统从安全状态出发,若资源分配不当可能进入不安全状态并最终导致死锁,但安全状态不会直接“成为”死锁状态。 C项错误,不安全状态仅表示系统可能无法避免死锁,但并非一定已陷入死锁; 例如,系统可能处于不安全状态但仍可通过合适的资源分配避免死锁。 D项正确,因为死锁发生时,系统必定不存在任何安全序列,因此死锁状态一定是不安全状态,这是死锁与安全状态之间的基本关系。


2018 年第 26 题 操作系统 选择题

假设系统中有 4 个同类资源,进程 P1、P2 和 P3 需要的资源数分别为 4、3 和 1,P1、P2 和 P3 已申请到的资源数分别为 2、1 和 0,则执行安全性检测算法的结果是()。

银行家算法

A. 不存在安全序列,系统处于不安全状态 B. 存在多个安全序列,系统处于安全状态 C. 存在唯一安全序列 P3、P1、P2,系统处于安全状态 D. 存在唯一安全序列 P3、P2、P1,系统处于安全状态

[tag_link]

正确答案:A

本题考察 安全性检查 ,由题中数据可知,仅剩最后一个同类资源,若将其分给 P1 或 P2,则均无法正常执行;若分给 P3,则 P3 正常执行完成后,释放的这个资源仍无法使 P1、P2 正常执行,故不存在安全序列,选 A。


2022 年第 26 题 操作系统 选择题

系统中有三个进程PO 、P1 、P2及三类资源A 、B 、C。若某时刻系统分配资源的情况如下表所示,则 此时系统中存在的安全序列的个数为()。

2018_Q7_3

A.1

B.2

C.3

D.4

[tag_link]

正确答案:B

初始时系统中的可用资源数为 <1,3,2> ,只能满足 P0 的需求 <0,2,1> ,所以 安全分配序列 第一个只能是 P0, 将资源分配给 P0 后,P0 执行完释放所占资源,可用资源数变为 <1,3,2> + <2,0,1> = <3,3,3> , 此时可用资源数既能满足 P1,也能满足 P2,可以先分配给 P1,P1 执行完释放资源再分配给 P2, 也可以先分配给 P2,P2 执行完释放资源再分配给 P1。所以安全序列可以是 ①P0、P1、P2 或 ②P0、P2、P1。


模拟卷 年第 27 题 操作系统 选择题

利用银行家算法进行安全序列检查时,不需要的参数是( )。

A. 系统资源总数 B. 满足系统安全的最少资源数 C. 用户最大需求数 D. 用户已占有的资源数

银行家算法

[tag_link]

正确答案:B

银行家算法是一种死锁避免算法,用于检查系统在分配资源后是否处于安全状态,即是否存在一个安全序列使得所有进程都能顺利完成。

算法进行安全序列检查时,需要以下参数:系统资源总数(用于计算当前可用资源)、用户最大需求数(每个进程对资源的最大需求量)、用户已占有的资源数(每个进程当前已分配的资源量)。 通过这些参数,可以计算需求矩阵(最大需求减去已占有)和可用资源向量,进而模拟资源分配过程以判断安全序列是否存在。

选项 B“满足系统安全的最少资源数”并非银行家算法所需的参数。 算法侧重于动态评估当前系统状态的安全性,而不是预先确定或使用一个理论上的最少资源数量。 因此,该参数在安全序列检查中是不必要的。


2011 年第 27 题 操作系统 选择题

某时刻进程的资源使用情况如下表所示。

此时的安全序列是( )。

银行家算法

A. P1, P4, P0, P2, P3

B. P1, P4, P3, P0, P2

C. P1, P4, P0, P3, P2

D. 不存在

[tag_link]

正确答案:D

题应采用排除法,逐个代入分析。当剩余资源分配给P1,待P1执行完后,可用资源数为 (2,2,1),此时仅能满足P4的需求,排除 A、B;接着分配给P4,待P4执行完后,可用资源数为 (2,2,2),此时已无法满足任何进程的需求,排除 C。此外,本题还可以使用 银行家算法 求解(对于选择题来说,显得过于复杂)。


2012 年第 27 题 操作系统 选择题

假设 5 个进程P0、P1、P2、P3、P4共享三类资源R1、R2、R3,这些资源总数分别为 18、6、22。T0 时刻的资源分配情况如下表所示,此时存在的一个安全序列是( )。

银行家算法

A. $P_0, P_2, P_4, P_1, P_3$

B. $P_1, P_0, P_3, P_4, P_2$

C. $P_1, P_2, P_3, P_0, P_4$

D. $P_3, P_2, P_1, P_0, P_4$

[tag_link]

正确答案:D

首先求得各进程的需求矩阵 Need 与可利用资源矢量 Available: 比较 Need 和 Available 可以发现,初始时进程P1与P3可满足需求,排除 A、C。尝试给P1分配资源,则P1完成后 Available 将变为 (6,3,6),无法满足P0的需求,排除 B。尝试给P3分配资源,则P3完成后 Available 将变为 (4,3,7),该向量能满足其他所有进程的需求。所以,以P3开头的所有序列都是 安全序列


2020 年第 27 题 操作系统 选择题

某系统中有 A、B 两类资源各 6 个,t 时刻资源分配及需求情况如下表所示。

进程A 已分配数量B 已分配数量A 需求总量B 需求总量
P12344
P22131
P31234

t 时刻安全性检测结果是( )。

银行家算法

A. 存在安全序列 P1、P2、P3 B. 存在安全序列 P2、P1、P3 C. 存在安全序列 P2、P3、P1 D. 不存在安全序列

[tag_link]

正确答案:B

首先求出 需求矩阵 : 由 Allocation 得知当前 Available 为 (1,0)。由需求矩阵可知,初始只能满足 P2 的需求,选 项 A 错误。P2 释放资源后 Available 变为 (3,1),此时仅能满足 P1 的需求,选 项 C 错误。 P1 释放资源后 Available 变为 (5,4),可以满足 P 3 的需求,得到的安全序列为 P2, Pl, P3, 选项 B 正确,选项 D 错误。


2013 年第 32 题 操作系统 选择题

下列关于银行家算法的叙述中,正确的是( )。

银行家算法

A.银行家算法可以预防死锁

B.当系统处于安全状态时,系统中一定无死锁进程

C.当系统处于不安全状态时,系统中一定会出现死锁进程

D.银行家算法破坏了死锁必要条件中的“请求和保持”条件

[tag_link] 正确答案:B 银行家算法 是避免死锁的方法,破坏死锁产生的必要条件是预防死锁的方法。利用银行家算法,系统处于安全状态时就可以避免死锁(即此时必然无死锁);当系统进入不安全状态后便可能进入死锁状态(但也不是必然)。


模拟卷 年第 45 题 操作系统 综合题

(8 分)某系统由 R1、R2 和 R3 共 3 种资源,在 T0 时刻 P1、P2、P3 和 P4 这 4 个进程对资源的占用和需求情况如下表所示,此时系统的可用资源向量为 (2,1,2)。试问:

(1)系统是否处于安全状态?如安全,请给出一个安全序列。 (2)如果此时 P1 和 P2 均发出资源请求向量 Request(1,0,1),为了保证系统的安全性,应该如何分配资源给这两个进程?说明你所采用策略的原因。 (3)如果(2)中两个请求立即得到满足后,系统此刻是否处于死锁状态?

文件概念 银行家算法

[tag_link]

**【答案】** (1)系统处于安全状态,一个安全序列为 P2→P1→P3→P4。 (2)应该先分配资源给 P2 的请求 Request(1,0,1),而对于 P1 的请求暂不分配。因为先分配给 P2 后系统仍处于安全状态,而先分配给 P1 或同时分配给两者都会导致系统进入不安全状态。 (3)如果两个请求立即得到满足,系统此刻处于死锁状态。

**【解析】** 首先,计算各进程还需资源数量: P1 还需 `(2,2,2)`, P2 还需 `(2,0,2)`, P3 还需 `(1,1,3)`, P4 还需 `(4,2,0)`。

系统当前可用资源为 `(2,1,2)`。

**(1)使用银行家算法检查安全状态** 当前可用资源 `(2,1,2)` 可满足 P2 的还需资源 `(2,0,2)`,因此 P2 可运行。 P2 完成后释放资源 `(4,1,1)`,可用资源变为 `(6,2,3)`。 此时可满足 P1 的还需资源 `(2,2,2)`,P1 运行后释放 `(1,0,0)`,可用资源变为 `(7,2,3)`。 接着可满足 P3 的还需资源 `(1,1,3)`,P3 运行后释放 `(2,0,1)`,可用资源变为 `(9,2,4)`。 最后满足 P4 的还需资源 `(4,2,0)`。

因此存在安全序列 `P2 → P1 → P3 → P4`,系统处于安全状态。

**(2)当 P1 和 P2 均请求 `Request(1,0,1)` 时** 需考虑分配顺序以确保系统安全。

  • **若先分配给 P1**: 分配后可用资源为 `(1,1,1)`,各进程还需资源不变,但此时所有进程的还需资源均无法被满足(P1 需 `(1,2,1)`,P2 需 `(2,0,2)`,P3 需 `(1,1,3)`,P4 需 `(4,2,0)`),系统进入不安全状态。

  • **若先分配给 P2**: 分配后可用资源为 `(1,1,1)`,P2 还需变为 `(1,0,1)`。 此时 P2 可运行,完成后释放资源,可用资源变为 `(6,2,3)`,后续可依次运行 P1、P3、P4,系统安全。

  • **若同时分配给两者**: 可用资源变为 `(0,1,0)`,所有进程均无法运行,系统不安全。

因此,为保证安全,应先分配资源给 P2。

**(3)若两个请求立即同时满足** 则可用资源为 `(0,1,0)`,各进程还需资源为: P1 `(1,2,1)`, P2 `(1,0,1)`, P3 `(1,1,3)`, P4 `(4,2,0)`。

所有进程都无法获得所需资源,且无进程可运行释放资源,因此系统处于死锁状态。