首页 > 范文大全 > 正文

银行家算法安全性序列分析

开篇:润墨网以专业的文秘视角,为您筛选了一篇银行家算法安全性序列分析范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要 在操作系统的处理机调度的过程中,由于竞争资源或者进程间推进顺序非法,都会导致死锁的发生。本文主要研究如何利用银行家算法可以避免死锁,并分析银行家算法安全性序列

关键词 银行家算法;安全性序列;避免死锁

中图分类号TP39 文献标识码A 文章编号 1674-6708(2011)42-0225-02

0引言

处理死锁的方法主要包括预防死锁、避免死锁、检测死锁和解除死锁。而利用银行家算法可以避免死锁,在这一避免死锁的过程中,银行家算法安全性序列分析是尤为重要的。

1 银行家算法中的数据结构

1) 空闲资源向量Available。这是一个数组,它里面包括m个元素,这些元素都可以分别用来表示一种空闲的资源的数量的多少,系统中存储的这种全部空闲的资源的数量的多少为它的初始值,随该类资源的分配和回收,其数值发生动态地改变。如果Available[j]=K,那么,系统中当前存在K个Rj类资源;

2) 最大需求矩阵Max。Max矩阵是n×m维的,该矩阵定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K,那么,进程i需要Rj类资源的最大数量的多少为K;

3) 分配矩阵Allocation。Allocation矩阵是n×m维的,该矩阵定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation[i,j]=K,那么,进程i当前已分得Rj类资源的数量的多少为K;

4) 需求矩阵Need。Need矩阵是n×m维的,该矩阵定义了所有进程仍然需求的各类资源数。如果Need[i,j]=K,那么,为了能够完成其任务,进程i还需要Rj类资源K个。

Need[i,j]=Max[i,j]-Allocation[i,j]。

2 银行家算法

设Requesti是进程Pi的请求向量,如果Requesti[j]=K,表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:

1) 如果Requesti[j]≤Need[i,j],便转向步骤2;否则认为出错,因为它所需要的资源数大于它仍然需要的最大值。

2) 如果Requesti[j]≤Available[j],便转向步骤(3);否则, 表示尚无足够资源,Pi须等待。

3) 系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值:

Available[j]∶=Available[j]-Requesti[j];

Allocation[i,j]∶=Allocation[i,j]+Requesti[j];

Need[i,j]∶=Need[i,j]-Requesti[j];

4) 系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。如果安全,就正式将资源分配给进程Pi,从而实现本次分配;反之,取消这次的试探分配,保持上一次的资源分配状态,让进程Pi等待。

3 安全性算法

1) 设置两个向量

(1)工作向量Work:它表示系统可提供给进程继续运行所需的各类资源数量的多少,它含有m个元素,在执行安全算法开始时,Work∶=Available;(2) Finish:它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finish[i]∶=false;当有足够资源分配给进程时, 再令Finish[i]∶=true。

2) 从进程集合中找到一个能满足下述条件的进程

(1) Finish[i]=false;

(2)Need[i,j]≤Work[j];

如果找到,那么,执行步骤(3), 否则,执行步骤(4)。

3) 当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:

Work[j]∶=Work[i]+Allocation[i,j];

Finish[i]∶=true;

go to step 2;

4) 如果所有进程的Finish[i]=true都满足, 则表示系统处于安全状态;否则,系统处于不安全状态。

4 银行家算法安全性序列分析之例

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

参考文献

[1]崔建平.深入探讨银行家算法[J].科技信息(学术研究),2008(17).

[2]侯刚.深入解析银行家算法[J].潍坊学院学报,2006(2).

[3]曹现玲.浅谈银行家算法[J].中国科技信息,2008(16).

[4]仲兆满,管燕.银行家算法的改进及其在操作系统上的推广[J].连云港师范高等专科学校学报,2002(2).

[5]王继奎,王会勇.基于银行家算法的进程安全序列全搜索算法[J].甘肃科学学报,2009(2).