📜  操作系统中的银行家算法

📅  最后修改于: 2021-09-27 14:58:39             🧑  作者: Mango

先决条件 – 资源分配图 (RAG)、银行家算法、银行家算法程序
银行家算法是一种资源分配和避免死锁的算法。该算法测试安全性,模拟所有资源的预定最大可能数量的分配,然后进行“s 状态”检查以测试可能的活动,然后决定是否允许继续分配。

简单来说,它检查任何资源的分配是否会导致死锁,或者将资源分配给进程是否安全,如果不是,则不将资源分配给该进程。确定一个安全序列(即使只有 1 个)将确保系统不会陷入死锁。

银行家算法通常用于确定安全序列是否存在。但在这里我们将确定安全序列的总数并打印所有安全序列。

使用的数据结构是:

  • 可用向量
  • 最大矩阵
  • 分配矩阵
  • 需求矩阵

例子:
输入:

Output: Safe sequences are:
P2--> P4--> P1--> P3
P2--> P4--> P3--> P1
P4--> P2--> P1--> P3
P4--> P2--> P3--> P1

There are total 4 safe-sequences 

解释:
总资源为 R1 = 10, R2 = 5, R3 = 7 分配的资源为 R1 = (0+2+3+2 =) 7, R2 = (1+0+0+1 =) 2, R3 = (0 +0+2+1 =) 3. 因此,剩余资源为 R1 = (10 – 7 =) 3, R2 = (5 – 2 =) 3, R3 = (7 – 3 =) 4。
剩余可用资源 = 总资源 – 已分配资源

剩余需求 = 最大 – 已分配

所以,我们可以从 P2 或 P4 开始。在银行家算法的第一次或第二次尝试步骤中,我们无法从 P1 或 P3 的可用资源中满足剩余需求。只有四种可能的安全序列。这些是 :
P2–> P4–> P1–> P3
P2–> P4–> P3–> P1
P4–> P2–> P1–> P3
P4–> P2–> P3–> P1

执行:

.

输出:

Safe sequences are:
P2--> P4--> P1--> P3
P2--> P4--> P3--> P1
P4--> P2--> P1--> P3
P4--> P2--> P3--> P1

There are total 4 safe-sequences