操作系统--死锁避免(银行家算法)

深碍√TFBOYSˉ_ 2023-01-01 08:51 209阅读 0赞
  • 可利用资源向量Available。这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态地改变。如果Available[j]=K,则表示系统中现有Rj类资源K个。
  • 最大需求矩阵Max。这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K。
  • 分配矩阵Allocation。这也是一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation[i,j]=K,则表示进程i当前已分得Rj类资源的数目为K。
  • 需求矩阵Need。这也是一个n×m的矩阵,
    用以表示每一个进程尚需的各类资源数。
    如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成其任务。
    N e e d [ i , j ] = M a x [ i , j ] − A l l o c a t i o n [ i , j ] Need[i,j]=Max[i,j]-Allocation[i,j] Need[i,j]=Max[i,j]−Allocation[i,j]

在这里插入图片描述

假定系统中有五个进程{P0, P1, P2, P3, P4}和三类资源{A, B, C},各种资源的数量分别为10、5、7,在T0时刻的资源分配情况如图所示。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

P1请求资源:P1发出请求向量Request1(1,0,2),系统按银行家算法进行检查:

  • ① Request1(1, 0, 2)≤Need1(1, 2, 2)
  • ② Request1(1, 0, 2)≤Available1(3, 3, 2)
  • ③ 系统先假定可为P1分配资源,并修改Available, Allocation1和Need1向量,由此形成的资源变化情况如中的红色字体所示。
  • ④ 再利用安全性算法检查此时系统是否安全。在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,209人围观)

还没有评论,来说两句吧...

相关阅读

    相关 避免之——银行家算法

    一 概述 银行家算法是最具有代表性的避免死锁的算法,原本运用于银行系统,以确保银行在发放现金贷款时,不会发生不能满足用户需求的情况。 为了实现银行家算法,每一个新进程在

    相关 预防银行家算法

    安全与不安全状态 安全状态:如果没有死锁发生,并且即使所有的进程突然请求对资源的最大需求,也仍然存在某种调度次序能够使得每个进程运行完毕,那么称该状态安全。 ![这里