银行家算法安全性序列分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
银行家算法安全性序列分析
摘要:在操作系统的处理机调度的过程中,由于竞争资源或者进程间推进顺序非法,都会导致死锁的发生。
本文主要研究如何利用银行家算法可以避免死锁,并分析银行家算法安全性序列。
关键词:银行家算法;安全性序列;避免死锁
引言
处理死锁的方法主要包括预防死锁、避免死锁、检测死锁和解除死锁。
而利
用银行家算法可以避免死锁,在这一避免死锁的过程中,银行家算法安全性序列分析是尤为重要的。
1.银行家算法中的数据结构
(1)空闲资源向量Available。
这是一个数组,它里面包括m个元素,这些元素都可以分别用来表示一种空闲的资源的数量的多少,系统中存储的这种全部空闲的资源的数量的多少为它的初始值,随该类资源的分配和回收,其数值发生动态地改变。
如果Available [j] =K,那么,系统中当前存在K个Rj类资源。
(2)最大需求矩阵Max。
Max矩阵是nx m维的,该矩阵定义了系统中n 个进程中的每一个进程对m类资源的最大需求。
如果Max [i,j] =K,那么,进程i需要Rj 类资源的最大数量的多少为K。
(3)分配矩阵Allocation。
Allocation矩阵是nx m维的,该矩阵定义了系
统中每一类资源当前已分配给每一进程的资源数。
如果Allocation [i,j] =K,那么,进程i当前已分得Rj类资源的数量的多少为K o
(4)需求矩阵Need。
Need矩阵是nx m维的,该矩阵定义了所有进程仍然需求的各类资源数。
如果Need] i,j] =K,那么,为了能够完成其任务,进程i还需要Rj 类资源K个。
Need[i,j] =Max [ i,j] -Allocation [i,j]
2.银行家算法
设Requesti是进程Pi的请求向量,如果Request]j] =K,表示进程Pi需要K个Rj类型的资源。
当Pi发出资源请求后,系统按下述步骤进行检查:
(1)如果Requesti [jNeed [i,j ],便转向步骤2;否则认为出错,因为它所需要的资源数大于它仍然需要的最大值。
(2)如果Request [jAvailable [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)设置两个向量:① 工作向量Work:它表示系统可提供给进程继续运行所需的各类资源数量的多少,它含有m个元素,在执行安全算法开始时,Work :
=Available:②Finish:它表示系统是否有足够的资源分配给进程,使之
运行完成。
开始时先做Finish [ i ]:=false;当有足够资源分配给进程时,再令Finish [ i ]:=true。
(2)从进程集合中找到一个能满足下述条件的进程:
①Finish [ i ] =false;
②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.银行家算法安全性序列分析之例
假定系统中有五个进程{P0, P1, P2, P3, P4和三类资源{A, B, C},各种资源的数量分别为10、5、7,在T0时刻的资源分配情况如表1所示
表1 TO时刻的资源分配表
(1) TO时刻的安全性:
2 TO
(2) P1请求资源:P1发出请求向量Requestl (1, 0, 2),系统按银行家
算法进行检查:
①Requestl( 1,0, 2)< Needl (1,2, 2)
②Request1( 1,0, 2)< Available1 (3, 3, 2)
③系统先假定可为P1分配资源,并修改Available, Allocation1和Need1 向量,由此形成的资源变化情况如表2所示。
2P1
④再利用安全性算法检查此时系统是否安全。
表3 P1申请资源时的安全性检查
(3) P4请求资源:P4发出请求向量Request4(3, 3, 0),系统按银行家算法进行检查:
①Request4(3, 3, 0)< Need4 (4, 3, 1);
②Request4(3, 3, 0) vAvailable (2, 3, 0),让P4等待。
参考文献:
[1]崔建平•深入探讨银行家算法[J].科技信息(学术研究),2008,(17).
[2]侯刚.深入解析银行家算法[J].潍坊学院学报,2006,(02).
[3]曹现玲.浅谈银行家算法[J].中国科技信息,2008,(16).
[4]仲兆满,管燕•银行家算法的改进及其在操作系统上的推广[J].连云港师范高等专科学校学报,2002,(02).
[5]王继奎,王会勇.基于银行家算法的进程安全序列全搜索算法[J].甘肃科学学报,2009,(02).。