进程管理 - 银行家算法

文章目录

  • 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 五个进程,这些进程对资源的最大需求量和已分配资源数如下图所示,如果进程按序列执行,那么系统状态是安全的。
进程管理 - 银行家算法_第1张图片
供选择的答案:
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

进程管理 - 银行家算法_第2张图片

说明:若 剩余资源数 同时满足多个 还需资源数,则分配不分先后顺序,均可。

你可能感兴趣的:(网络工程,银行家算法)