文章目录
- 1 概述
- 2 银行家算法
- 2.1 原理
- 2.2 例题
1 概述
2 银行家算法
2.1 原理
- 我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于顾客向银行家贷款。(银行家 => 操作系统,资金 => 资源,顾客 => 进程)
- 为保证资金的安全,银行家 规定:
- (1) 当一个顾客对资金的最大需求量不超过银行家现有的资金时,可以接纳顾客
- (2) 顾客可以分期贷款,但贷款的总数不能超过最大需求量
- (3) 当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款
- (4) 当顾客得到所需的全部资金后,一定能在有限的时间里归还所有的资金
2.2 例题
【例题1】假设系统中有三类互斥资源 R1、R2、R3,可用资源数分别是 9,8,5。在 T0 时刻系统中有 P1、P2、P3、P4 和 P5 五个进程,这些进程对资源的最大需求量和已分配资源数如下图所示,如果进程按序列执行,那么系统状态是安全的。
供选择的答案:
A.P1 -> P2 -> P4 -> P5 -> P3
B.P2 -> P4 -> P5 -> P1 -> P3
C.P2 -> P1 -> P4 -> P5 -> P3
D.P4 -> P2 -> P5 -> P1 -> P3
解答思路:
- 首先,根据 已分配资源数,算出 剩余资源数(红色字体部分)
- 剩余 R1 = 9 - 1 - 2 - 2 - 1 - 1 = 2
- 剩余 R2 = 8 - 2 - 1 -1 - 2 - 1 = 1
- 剩余 R3 = 5 - 1 - 1- 0 - 0 - 3 = 0
- 其次,根据 最大需求量 和 已分配资源数,算出 还需资源数(蓝色字体部分)
- 最后,判断 剩余资源数 能否满足 还需资源数
- 剩余 R3 = 0,其中 P1、P3、P4、P5 均还需资源数 R3 = 1,所以第一个分配的,只能是 P2
- P2 分配完成后,会释放资源,此时 完成、释放资源后的总资源数 如下图
- 剩余资源数: R1 = 4,R2 = 2,R3 = 1 与 还需资源数 继续对比,此时能满足的,只有 P4,结合选项,答案为 B
说明:若 剩余资源数 同时满足多个 还需资源数,则分配不分先后顺序,均可。