欢迎来到天天文库
浏览记录
ID:42698138
大小:118.02 KB
页数:20页
时间:2019-09-20
《银行家算法C源程序及流程图-报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、银行家算法C++源程序及流程图•报告银行家算法c卄源程序及流程图1设计目的1)了解多道程序系统中,多个进程并发执行的资源分配。2)掌握银行家算法,了解资源在进程并发执行中的资源分配情况。3)掌握预防死锁的方法,系统安全状态的基本概念。2设计内容设计一个11个并发进程共享m个系统资源的程序以实现银行家算法。要求:1)简单的选择界面;2)能显示当前系统资源的占用和剩余情况。3)为进程分配资源,如果进程要求的资源大于系统剩余的资源,不与分配并且提示分配不成功;4)撤销作业,释放资源。编写和调试一个系统动态
2、分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有效地防止和避免死锁的发生。银行家算法分配资源的原则是:系统掌握每个进程对资源的最大需求量,当进程要求申请资源时,系统就测试该进程尚需资源的最大量,如果系统中现存的资源数大于或等于该进程尚需求资源最大量时,就满足进程的当前申请。这样就可以保证至少有一个进程可能得到全部资源而执行到结束,然后归还它所占有的全部资源供其它进程使用。银行家算法中的数据结构(1)可利用资源向量Availablc(一维数组)是一个含有m个元素,其中的每一个元素代表一
3、类可利用的资源数目,其初值是系统中所配置的该类全部可用资源数目。如果Available[j]=k,表示系统中现有Rj类资源k个。(2)最大需求矩阵Max(二维数组)m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max(i,j)=k,表示进程1需要Rj类资源的最大数目为k。(3)分配矩阵Allocation(—维数组)m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocalion(ij)=k,表示进程i当前已分得Rj类资源k个。(4)需求矩阵Need
4、(二维数组)是一个含有的矩阵,用以表示每一个进程尚需的各类资源数。如果Need(1,j)二k,表示进程1还需要Rj类资源k个,方能完成其任务。Nccd(i,j)二Max(iJ)-Allocation(iJ)3.1程序流程图初始化算法流程图银行家算法流程图安全性算法流程图3.2源程序#includeusingnamespacestd;#defineI50/*最大进程数*/#defineJ100/*最大资源数*/#defineFalse0#defineTrue1intAvailabl
5、e[J];/*可利用资源数*/intMAX[I][J];/*最大需求矩阵*/intAllocation[1][J];/*分配矩阵*/intNeed[T][J];/*需求矩阵*/intRequest[I][J];/*进程需要资源数*/intFinish[I];/*系统是否有足够的资源分配*/intp[l];/*记录序列*/intM,N;/*M个进程,N类资源*/voidinitial();boolSafe();voidrequest();voidinitial()/*初始化算法*/inti,j;cou
6、t«n输入进程数:”;cin»M;cout«M输入资源的种类数:”;cin»N;foT(i二0;i7、+1«”个资源数错误,请重新输入:n«end1;J--;continue;}}685银行家算法C卄源程序及流程图}cout«”输入各个资源现有数目:M«cndl;for(i=0;i8、[ID][i];}for(i二0;iNeed[ID][i])cout«"输入的请求资源数超过所需的资源最大数!请重新输continue;if(Request[ID][i]>Available[i]){cout«M9、ij无足够资源!请重新输入!"《cndl;continue;}}for(i=0;i
7、+1«”个资源数错误,请重新输入:n«end1;J--;continue;}}685银行家算法C卄源程序及流程图}cout«”输入各个资源现有数目:M«cndl;for(i=0;i8、[ID][i];}for(i二0;iNeed[ID][i])cout«"输入的请求资源数超过所需的资源最大数!请重新输continue;if(Request[ID][i]>Available[i]){cout«M9、ij无足够资源!请重新输入!"《cndl;continue;}}for(i=0;i
8、[ID][i];}for(i二0;iNeed[ID][i])cout«"输入的请求资源数超过所需的资源最大数!请重新输continue;if(Request[ID][i]>Available[i]){cout«M
9、ij无足够资源!请重新输入!"《cndl;continue;}}for(i=0;i
此文档下载收益归作者所有