欢迎来到天天文库
浏览记录
ID:26705921
大小:80.00 KB
页数:12页
时间:2018-11-28
《银行家算法设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一.设计目的:1、银行家算法是避免死锁的一种重要方法,本实验要求用高级语言编写和调试一个简单的银行家算法程序。加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。2、提高学生的程序设计能力、提高算法设计质量与程序设计素质。二.设计内容:假设有n个进程m类资源,则有如下数据结构:可利用资源向量Available。这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态地改变。Available[j]=K,则表示系统中现有Rj类资源K个。最大需求矩阵Max。这
2、是一个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个,方能完成其任务。上述三个矩阵存在如下关系:Need[i,j]=Max[i,j]-Allocation[i,
3、j]三.设计过程1、实现功能voidshowdata()//函数showdata,输出资源分配情况voidchangdata()//进行资源分配voidsafe()//安全性算法,检验是否安全状态voidshare()//利用银行家算法对申请资源对进行判定1、添加功能1、以用户输入的方式提出资源请求,并用银行家算法避免可能发生的死锁,若系统安全,允许用户继续申请资源。2、与用户的交互界面友好,能动态地实现资源的修改和分配,动态的增加进程。3、能计算安全系列并输出。voidchangeresources()//修改资源函数voiddelresources()//删除资源voida
4、ddprocess()//添加作业2、设计思路银行家算法是一种最有代表性的避免死锁的算法。要解释银行家算法,必须先解释操作系统安全状态和不安全状态安全状态:如果存在一个由系统中所有进程构成的安全序列P1,…,Pn,则系统处于安全状态。安全状态一定是没有死锁发生。不安全状态:不存在一个安全序列。不安全状态不一定导致死锁。那么什么是安全序列呢?安全序列:一个进程序列{P1,…,Pn}是安全的,如果对于每一个进程Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj(j
5、的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。3、算法和流程图算法:编制银行家算法通用程序,并检测所给状态的系统安全性。设进程I提出请求Re
6、quest[N],则银行家算法按如下规则进行判断。(1)如果Request[N]<=NEED[I,N],则转(2);否则,出错。(2)如果Request[N]<=AVAILABLE,则转(3);否则,出错。(3)系统试探分配资源,修改相关数据:AVAILABLE=AVAILABLE-REQUESTALLOCATION=ALLOCATION+REQUESTNEED=NEED-REQUEST(4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。流程图:开始输入数据提出请求RequestRequest[j]<=NEED[i][j]?Request
7、[j]<=AVAILABLE[j]?AVAILABLE[j]=AVAILABLE[j]-Request[j];ALLOCATION[k][j]=ALLOCATION[k][j]+Request[j];NEED[k][j]=NEED[k][j]-Request[j];check?安全性检查调用showdata()函数,输出资源分配情况调用rstordata(i)函数,恢复资源数调用showdata()函数,输出资源分配情况输出信息:经安全性检查,系统安全,本次分配成功输出信息:系统不安全!!!
此文档下载收益归作者所有