Skip to content
字数
785 字
阅读时间
5 分钟

银行家算法是一种安全性算法,用于检查在资源分配后,系统是否仍然处于安全状态。以下是计算过程的步骤:

输入数据

  1. 资源分配矩阵 AllocationAllocation:

    [00321000135403320014]

  2. 需求矩阵Need=MaxAllocation

需求矩阵计算

通过 Need[i][j]=Max[i][j]Allocation[i][j]计算得到:

Need=[00120750100203200642]


初始可用资源

Available=[1622]


银行家算法步骤

  1. 安全性检查初始化
    设置完成的标记数组 Finish=[False,False,False,False,False],并初始化工作向量 Work=Available

  2. 选择可以满足的进程P0P4 检查每个未完成的进程,是否满足 Need[i][j]Work[j]

    • P0: Need[0]=[0012]Work=[1622]满足条件

      • 分配资源:Work=Work+Allocation[0]=[1622]+[0032]=[1654]
      • 标记完成:Finish[0]=True
    • P1: Need[1]=[0750]Work=[1654]不满足条件

    • P2: Need[2]=[1002]Work=[1654]满足条件

      • 分配资源:Work=Work+Allocation[2]=[1654]+[1354]=[29108]
      • 标记完成:Finish[2]=True
    • P3: Need[3]=[0320]Work=[29108]满足条件

      • 分配资源:Work=Work+Allocation[3]=[29108]+[0332]=[2121310]
      • 标记完成:Finish[3]=True
    • P4: Need[4]=[0642]Work=[2121310]满足条件

      • 分配资源:Work=Work+Allocation[4]=[2121310]+[0014]=[2121414]
      • 标记完成:Finish[4]=True
    • P1: 再次检查 P1Need[1]=[0750]Work=[2121414]满足条件

      • 分配资源:Work=Work+Allocation[1]=[2121414]+[1000]=[3121414]
      • 标记完成:Finish[1]=True
  3. 最终检查
    所有进程完成:Finish=[True,True,True,True,True]


结论

系统处于安全状态,安全序列为:

P0P2P3P4P1

该安全序列说明,按此顺序分配资源,系统不会发生死锁。

贡献者

The avatar of contributor named as freeway348 freeway348

文件历史

撰写