银行家算法分析和总结_第1页
银行家算法分析和总结_第2页
银行家算法分析和总结_第3页
银行家算法分析和总结_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验2银行家算法(2学时)一、实验目的理解银行家算法,掌握进程平安性检查的方法及资源分配的方 法。二、实验内容编写程序实现银行家算法,并验证程序的正确性。三、实验要求编制模拟银行家算法的程序,并以下面给出的例子验证所编写的 程序的正确性。例子:某系统有A、B、C、D4类资源共5个进程(PO、Pl、P2、(1)现在系统是否处于平安状态?(2)如果现在进程P1提出需求(0、4、2、0)个资源的请求,系统能否满足它的请求?#include string.h#include iostream using namespace std;#define FALSE 0 #define TRUE 1#defi

2、ne W10#define R 20intM; 总进程数intN; 资源种类int ALL_RESOURCEW各种资源的数目总和int MAXWR;/7M个进程对N类资源最大资源需求int AVAILABLER;系统可用资源数intALLOCATIONWR;M个进程已经得SUN类资源的资源量int NEEDWR;/M个进程还需要N类资源的资源int RequestR;请求资源个数void shovvdata()函数showdata,输出资源分配情况ALL:endl;资源AVALIABLE:endi;资源vvjvv”: AVAILABLEj;NEED:Hendl;资源资源r- 资源int i,j

3、; coutH coutM n;for (j=0;jN;j+)coutH nALL_RESOURCEj;coutendlendl;cout coutn n;for (j=0;jN;j+)cout coutendlendl;coutn coutn 2Hendl;for (i=0;iM;i+)for (i=0;iM;i+)进程 p,iM:1;/Icoutnfor(j=0;jN;j+)coutNEEDijn coutendl;ALLOCATION: endl;资源0”vv”资源l“vv”资源I coutendl; coutM cout2Hendl;for (i=0;iM;i+)coutH进程 p”v

4、vivv”: n;for(j=0;jN;j+)coutALLOCATIONijH M; coutendl;coutendl;Ivoid changdata(int k) 函数changdata,改变可用资源和已经拿到资源和还需要 的资源的值int j;for (j=O;jN;j+)AVAILABLEj=AVAILABLEj-Requestj;ALLOCATIONkj=ALLOCATIONkj+Requestj;NEEDkj=NEEDkj-Requestj;)void rstordata(int k) 函数rstordata,恢复可用资源和已经拿到资源和还需要的 资源的值int j;for (j

5、=O;jN;j+) AVAILABLEj=AVAILABLEj+Requestj; ALLOCATIONkj=ALLOCATIONkj-Requestj;NEEDkj=NEEDkj+Requestj;|int chkerr(int s) 函数chkerr,检查是否由荃 int izjzk,l;int WORKWZFINISHW;for(k=0;kM;k+)FINISHk=false;|/7重置 FINISHfor(k=0;kN;k+)WORKk=AVAILABLEk;|for(i=0;i= NEEDij)1+;Iif(l=N&FINISHi=false)for(j=0;jN;j+)WORKj+

6、=ALLOCATIONij;IFINISHi=true;coutH ,pniMi=-l;else(for(i=0;iM;i+) if(FINISHi=FALSE)(coutendl;coutn系统进入不平安状 态,申请失败!*endl; system(pause);coutendl;return 1;|coutendl;cout分配成功vendl;system(npauseH);coutendl;return 0;void bank() 银行家算法int i=0zj=0;char flag=Y;while(flag=,Y, | |flag=y)i=-l;while(i=M)(cout-申请资源

7、的进程号:“;coutHpn;cini;if(i=M)coutn输入的进程号不存在,重新输A!,endl;coutn请输入进程Pvvivv”申请的资源数:endl;for (j=O;jNEEDiR) 假设请求的资源数大于进程还需要i类资源的资 源*jcout请求资源大于进程所需资源!”vAVAILABLEj) 假设请求的资源数大于可用资源数IcoutH申请资源大于可用资源!” vvendl;cout申请不合理,出错!请重新选择!Vendl;system(npausen);flag=N;break;if(flag=,Y, | | flag=,y)changdata(i);调用changdata函

8、数,改变资源数if(chkerr)假设系统平安rstordata(i);调用rstordata函数,恢复资源数showdata(); /出资源分配情况Ielse假设系统不平安showdata();帏出资源分配情况else 假设 flag=N | | flag=nshowdata();coutendl;coutn继续输入Y,退出输入任意键:*;cinflag;void main。主函数int i=Ozj=Ozp;COUtVV”输入总进程数:;cinM;COUtVV”输入总资源种类严;cinN;COUtVV请输入总资源数:“;for(i=0;iN;i+)cinALL_RESOURCEi;coutv

9、v”依次输入各进程所需要的最大资源数:l:(max):”vvendl;for (i=0;iM;i+)for (j=O;jALL_RESOURCEj)COUtVV”占有资源超过了声明的该资源总数,请重新输入”;)while (MAXijALL_RESOURCEj);cout依次输入 allocation:endl;for (i=0;iM;i+)Ifor (j=O;jMAXij)coutvv”占有资源超过了声明的最大资源,请重新输入”;Jwhile (ALLOCATIONijMAXij);初始化资源数for (j=O;jN;j+)| p=ALL_RESOURCEj;for (i=0;iM;i+)(p=pALLOCATI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论