银行家算法安全性序列分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
银行家算法安全性序列分析
摘要在操作系统的处理机调度的过程中,由于竞争资源或者进程间推进顺序非法,都会导致死锁的发生。本文主要研究如何利用银行家算法可以避免死锁,并分析银行家算法安全性序列。
关键词银行家算法;安全性序列;避免死锁
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).