避免死锁的最具代表性算法是银行算法,命名是因为该算法可用于银行现金贷款。一家银行家将固定资金借给了几个客户。只要一个客户不借所有资金,银行家的资金就应该是安全的。银行家需要一种算法来确保可以在有限的时间内收回借贷资金。
假设客户将贷款分为几次,并说明他在第一贷款中的最大贷款额。特定算法如下:
(1)客户的贷款运营是按顺序进行的,直到所有运营完成为止。
(2)银行家对当前客户的贷款运营做出判断,以确定其安全性,并查看是否可以支持客户的贷款,即客户是否可以完成该运营。
(3)安全时,请贷款;否则,您暂时不会贷款。
01。银行算法中的数据结构
1。可用资源向量
可用的资源向量,也称为空闲向量,是包含M元素的数组。每个元素代表类中可用资源的数量,其初始值是系统中配置的类中所有可用资源的数量,其值随着资源类的分配和回收而动态变化。如果[j] = k,则意味着系统中有K rj级资源。
2。最大需求矩阵最大
最大需求矩阵是N×M矩阵,它定义了系统中n个过程的每个过程的M级资源的最大需求。如果max [i,j] = k,则意味着i-th过程所需的最大RJ级资源数为k。
3。分配矩阵
分配矩阵也称为拥有矩阵。它是一个N×M矩阵,它定义了系统中每个过程所占用的每种类型的资源数量。如果[i,j] = k,则意味着i-th过程当前已分为k的RJ级资源数量。
4。需要矩阵
需求矩阵,也称为应用程序矩阵,是一个N×M矩阵,用于表示每个过程所需的各种资源数量。如果需要[i,j] = k,则意味着第i-th过程仍然需要K RJ资源来完成任务。
显然,前三个矩阵之间存在以下关系:
02。实施银行算法
1。流程申请的资源状况
假设它是 PI的请求向量。如果[j] = k,则意味着 PI所需的类似RJ的资源数量是K。与需求[I]的关系可能在以下三种情况下。
(1)>需要[i]。这种情况表明该过程的资源要求超过了系统宣布的最大值,因此被认为是错误的。
(2)=需要[i]。这种情况意味着该过程现在适用于一口气所需的所有资源。
(3)
2。银行算法的描述
当该过程发布资源请求时,系统会根据以下步骤进行检查。
(1)如果≤[I],则移至步骤(2);否则出现错误,因为它所需的资源数量已超过其先前的最大值。
(2)如果≤,然后转到步骤(3);否则,这意味着没有足够的资源,PI必须等待。
(3)假设系统将资源分配给PI,则需要修改以下数据结构:
(4)系统执行安全算法,以检查此资源分配后系统是否处于安全状态。如果是安全的,则将真正分配资源来处理PI。否则,此过程的暂定分配将无效,原始资源分配状态将被恢复,并且PI将等待。
3。安全算法
工作向量工作代表系统在算法执行过程中继续运行所需的各种资源的数量。它包含m元素。在执行安全算法的开始时,初始值工作:=。
完成向量指示系统是否可以完成。它具有n个组件,指示是否可以执行和完成每个过程。如果[i]:= true,则意味着第i-th过程可以获得足够的资源并运行;如果[i]:=,则意味着该过程无法获得所需的所有资源并运行和运行。
让初始值[i]:=,i = 0,1,2,…,n-1。当有足够的资源分配给第i-the进程时,然后让[i]:= true。
安全算法的步骤如下。
(1)设置两个工作向量。设置工作向量,完成向量并分配初始值。
(2)进行安全检查。从该过程集中找到符合以下条件的过程I:
如果找到了这样的过程,请执行步骤(3);如果找不到这样的过程,请转到步骤(4)。
(3)
返回步骤(2)。
因为如果可以执行PI过程,则可以发布其资源。
(4)如果所有过程'[i]:= true满足,则意味着系统处于安全状态,并将资源正式分配给PI过程;否则,系统处于不安全状态,系统无法执行此试验分配,并还原原始资源分配状态使 Pi Wait等待。
如果确定系统处于安全状态,则可以通过计算过程找到安全序列。
银行算法具有良好的理论意义。但是,由于很难预见或获得实际系统中每个过程应用的最大资源向量,并且实际运行过程的数量被动态更改,因此很难在实际系统中实现银行算法或实施过程太昂贵了。
03。银行算法的应用
示例1 A系统具有三种类型的资源:A,B和C。在T0时,P1,P2,P3,P3和P4的资源职业和需求显示在表1中。此刻,可用资源向量系统的中有(2、1、2)。
表1每个过程的资源使用和要求
(1)表示系统中各种资源的总数,以及过程中流程所需的资源数量作为向量或矩阵。
(2)目前确定系统的安全性。如果是安全的,请写出安全序列,如果不安全,请写出参与僵局的过程。
(3)如果此时再次发出资源请求向量,为了维护系统安全性,那么如何将资源分配给这两个过程?解释采用该战略的原因。
(4)如果(3)中的所有请求立即满足,此刻系统是否陷入僵局?您终于可以进入僵局吗?如果可能的话,这意味着参加僵局;如果没有,这意味着原因。
版权声明:本文为 “博览广文网” 原创文章,转载请附上原文出处链接及本声明;
工作时间:8:00-18:00
客服电话
0755-88186625
电子邮件
admin@lanyu.com
扫码二维码
获取最新动态