ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:197.91KB ,
资源ID:16580808      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16580808.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(银行家算法课程设计报告Word文件下载.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

银行家算法课程设计报告Word文件下载.docx

1、设Requesti是进程Pi的请求向量。如果Requestijk,表示进程只需要k个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:(1)如果 Requestij=Needi,j,则转向步骤2;否则,认为出错,因为它所 3需要的资源数已超过它所宣布的最大值。(2)如果Requestij=Availablej ,则转向步骤3;否则,表示系统中尚无足够的资源,Pi必须等待。(3)系统试探把要求的资源分配给进程Pi,并修改下面数据结构中的数值:Availablej:=Availablej-Requestij; Allocationi,j:=Allocationi,j+Requestij

2、; Needi,j:=Needi,j-Requestij;(4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则,将试探分配作废,恢复原来的资源分配状态,让进程Pi等待。4.3安全性算法系统所执行的安全性算法可描述如下:(1)设置两个向量、工作向量Work。它表示系统可提供给进程继续运行所需要的各类资源数目,它含有m个元素,执行安全算法开始时,Work = Available。、Finish。它表示系统是否有足够的资源分配给进程,使之运行完成,开始时先做Finishi:=false ;当有足够资源分配给进程时,令 Finis

3、hi:=true。(2)从进程集合中找到一个能满足下述条件的进程:、Finishi=false; 、Needi,j=Workj;如找到,执行步骤(3);否则,执行步骤(4)。(3)当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:Workj:=Worki+Allocationi,j; Finishi:=true;goto step 2;(4)如果所有进程的Finishi:=true,则表示系统处于安全状态;否则,系统处于不安全状态。5设计思路(1)进程一开始向系统提出最大需求量;(2)进程每次提出新的需求都统计是否超出它事先提出的最大需求量;(3)若正常,则判断该进

4、程所需剩余量(包括本次申请)是否超出系统所掌握的剩余资源量,若不超出,则分配,否则等待。6算法流程图6.1银行家算法流程图 开始 提出进程i的请求 向量Resquest* alloci * +Request*=claim No ERROR i* Yes Request*=available* no ERROR yes available*-=Request* alloci*+=Request* is_safe() No yes available*+=Request* alloc*-=Request* 同意本次分配 拒绝本次分配 图1银行家算法流程图6.2银行家算法安全检测流程图 tmp_av

5、ail*=available* 寻找进程k满足 Claimk*-allock*tmp_avail* 是否存在这样 返回false 的进程 tmp_avail*+=alloc* 标记进程k 是否所有的进程 都被标记 返回true 图2银行家算法安全检测流程图7银行家算法之列假定系统中有五个进程:P0,P1,P2,P3,P4和三种类型的资源A,B,C,每一种资源的数量分别为10、5、7,在T0时刻的资源分配情况如图3所示。 资源情况 进程MaxAllocationNeedAvailableA B CP07 5 30 1 07 4 33 3 2(2 3 0)P13 2 22 0 0(3 0 2)1

6、2 2(0 2 0)P29 0 23 0 26 0 0P32 2 22 1 10 1 1P44 3 30 0 24 3 1图3 T0时刻的资源分配表(1)T0时刻的安全性:利用安全性算法对T0时刻的资源分配情况进行分析(如图可知,在T0时刻存在着一个安全序列P1,P3,P4,P2,P0,故系统是安全的。 资源情况WorkWork+AllocationFinish5 3 2true7 4 510 4 710 5 7图4 T0时刻的安全序列(2)P1请求资源:P1发出请求向量Request1(1,0,2),系统按银行家算法进行检查:Request1(1,0,2)=Need1(1,2,2)Reque

7、st1(1,0,2)=Available1(3,3,2)系统先假定可为P1分配资源,并修改Available,Allocation1和Need1向量,由此形成资源变化情况如图1中的圆括号所示。再利用安全性算法检查此时系统是否安全。如图5所示2 3 00 2 07 5 5图5 P1申请资源时的安全性检查由所进行的安全性检查得知,可以找到一个安全序列P1,P3,P4,P2,P0。因此系统是安全的,可以立即将P1所申请的资源分配给它。(3)P4请求资源:P4发出请求向量Request4(3,3,0),系统按银行家算法进行检查:Request4(3,3,0)Need4(4,3,1);Request4(

8、3,3,0)不小于等于Available(2,3,0),让P4等待。(4)P0请求资源:P0发出请求向量Request0(0,2,0),系统按银行家算法进行检查。Request0(0,2,0) Need0(7,4,3);Request0(0,2,0) Available(2,3,0);系统暂时先假定可为P0分配资源,并修改有关数据,如图6所示。0 3 07 3 22 1 00 0 04 3 2图6为P0分配资源后的有关资源数据(5)进行安全性检查:可用资源Available(2,1,0)已不能满足任何进程的需要,故系统进入不安全状态,此时系统不分配资源。8程序测试结果图7图8图9图10源程序清

9、单:#include stdio.hiostream.h#define FALSE 0#define TRUE 1#define W 10#define R 10int M ;int N ;int ALL_RESOURCEW;int MAXWR;int AVAILABLER;int ALLOCATIONWR;int NEEDWR;int RequestR;void output()int i,j;coutendlendl;各种资源的总数量:for (j=0;jN;j+) 资源: ALL_RESOURCEj;目前各种资源可利用的数量为:AVAILABLEj;各进程还需要的资源数量:for(i=0

10、;ii+)i;for (i=0;M;进程;NEEDij各进程已经得到的资源量:ALLOCATIONijvoid distribute(int k)int j;AVAILABLEj=AVAILABLEj-Requestj;ALLOCATIONkj=ALLOCATIONkj+Requestj;NEEDkj=NEEDkj-Requestj;void restore(int k)AVAILABLEj=AVAILABLEj+Requestj;ALLOCATIONkj=ALLOCATIONkj-Requestj;NEEDkj=NEEDkj+Requestj;int check()int WORKR,FIN

11、ISHW;for(j=0;j+) WORKj=AVAILABLEj;i+) FINISHi=FALSE;if(FINISHi=FALSE&=WORKj)WORKj=WORKi+ALLOCATIONij;FINISHi=TRUE;if(FINISHi=FALSE) 系统不安全! 本次资源申请不成功!return 1;else 经安全性检查,系统安全,本次分配成功。return 0;void bank() / 银行家算法int i=0,j=0;char flag=Ywhile(flag=|flag=y)i=-1;while(i=M) 请输入需申请资源的进程号:cinif(i=M) coutNEED

12、ij) 进程申请的资源数大于进程还需要类资源的数量! 若继续执行系统将处于不安全状态!flag=Nbreak;AVAILABLEj)申请的资源数大于系统可用if(flag=distribute(i);if(check() restore(i);output();else 是否继续银行家算法演示,按或键继续,按n键退出演示:flag;void version()t 银 行 家 算 法 void main() int i=0,j=0,p;version();getchar();请输入总进程数:请输入总资源种类:请输入各类资源总数:(需要输入数为N个)ALL_RESOURCEi;输入各进程所需要的各类资源的最大数量:M*NALL_RESOURCEj)占有资源超过了声明的该资源总数,请重新输入while (MAXijALL_RESOURCEj);输入各进程已经占据的各类资源的数量:M*NMAXij)占有资源超过了声明的最大资源,请重新输入while (ALLOCATIONijMAXij);j+) p=ALL_RESOURCEj;p=p-ALLOCATIONij;AVAILABLEj=p;if(AVAILABLEj0)AVAILABLEj=0;NEEDij=MAXij-ALLOCATIONij;bank();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1