




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
银行家算法模拟班级软件二班学号11270235姓名梁书敏一、实验目的(1)进一步理解利用银行家算法避免死锁的问题;(2)在了解和掌握银行家算法的基础上,编制银行家算法通用程序,将调试结果显示在计算机屏幕上,再检测和笔算的一致性。(3)理解和掌握安全序列、安全性算法加内容二、实验内容(1)了解和理解死锁;(2)理解利用银行家算法避免死锁的原理;(3)会使用某种编程语言。三、实验原理(一)安全状态指系统能按照某种顺序如<P1,P2,…,Pn>(称为<P1,P2,…,Pn>序列为安全序列),为每个进程分配所需的资源,直至最大需求,使得每个进程都能顺利完成。(二)银行家算法假设在进程并发执行时进程i提出请求j类资源k个后,表示为Requesti[j]=k。系统按下述步骤进行安全检查:(1)如果Requesti≤Needi则继续以下检查,否则显示需求申请超出最大需求值的错误。(2)如果Requesti≤Available则继续以下检查,否则显示系统无足够资源,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等待。(三)安全性算法(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;gotostep2;(4)如果所有进程的Finish[i]=true都满足,则表示系统处于安全状态;否则,系统处于不安全状态。流程图#include<iostream.h>#include<string.h>#include<stdio.h>#defineFalse0#defineTrue1intMax[100][100]={0};//各进程所需各类资源的最大需求intAvaliable[100]={0};//系统可用资源charname[100]={0};//资源的名称intAllocation[100][100]={0};//系统已分配资源intNeed[100][100]={0};//还需要资源intRequest[100]={0};//请求资源向量inttemp[100]={0};//存放安全序列intWork[100]={0};//存放系统可提供资源intM=100;//作业的最大数为100intN=100;//资源的最大数为100voidshowdata()//显示资源矩阵{inti,j;cout<<"系统目前可用的资源[Avaliable]:"<<endl;for(i=0;i<N;i++)cout<<name[i]<<"";cout<<endl;for(j=0;j<N;j++)cout<<Avaliable[j]<<"";//输出分配资源cout<<endl;cout<<"MaxAllocationNeed"<<endl;cout<<"进程名";for(j=0;j<3;j++){for(i=0;i<N;i++)cout<<name[i]<<"";cout<<"";}cout<<endl;for(i=0;i<M;i++){cout<<""<<i<<"";for(j=0;j<N;j++)cout<<Max[i][j]<<"";cout<<"";for(j=0;j<N;j++)cout<<Allocation[i][j]<<"";cout<<"";for(j=0;j<N;j++)cout<<Need[i][j]<<"";cout<<endl;}}intchangdata(inti)//进行资源分配{intj;for(j=0;j<M;j++){Avaliable[j]=Avaliable[j]-Request[j];Allocation[i][j]=Allocation[i][j]+Request[j];Need[i][j]=Need[i][j]-Request[j];}return1;}intsafe()//安全性算法{inti,k=0,m,apply,Finish[100]={0};intj;intflag=0;Work[0]=Avaliable[0];Work[1]=Avaliable[1];Work[2]=Avaliable[2];for(i=0;i<M;i++){apply=0;for(j=0;j<N;j++){if(Finish[i]==False&&Need[i][j]<=Work[j]){apply++;if(apply==N){for(m=0;m<N;m++)
Work[m]=Work[m]+Allocation[i][m];//变分配数Finish[i]=True;temp[k]=i;i=-1;k++;flag++;}}}}for(i=0;i<M;i++){if(Finish[i]==False){cout<<"系统不安全"<<endl;//不成功系统不安全return-1;}}cout<<"系统是安全的!"<<endl;//如果安全,输出成功cout<<"分配的序列:";for(i=0;i<M;i++){//输出运行进程数组cout<<temp[i];if(i<M-1)cout<<"->";}cout<<endl;return0;}voidshare()//利用银行家算法对申请资源对进行判定{charch;inti=0,j=0;ch='y';cout<<"请输入要求分配的资源进程号(0-"<<M-1<<"):";cin>>i;//输入须申请的资源号cout<<"请输入进程"<<i<<"申请的资源:"<<endl;for(j=0;j<N;j++){cout<<name[j]<<":";cin>>Request[j];//输入需要申请的资源}for(j=0;j<N;j++){if(Request[j]>Need[i][j])//判断申请是否大于需求,若大于则出错{cout<<"进程"<<i<<"申请的资源大于它需要的资源";cout<<"分配不合理,不予分配!"<<endl;ch='n';break;}else{if(Request[j]>Avaliable[j])//判断申请是否大于当前资源,若大于则{//出错co裕ut蛋<<引"进涛程"讽<<徐i<馆<"司申请白的资衣源大侧于系兵统现肚在可伙利用鹅的资首源"养;co汇ut芹<<袋"驶分配愤出错锡,不释予分弓配!浊"<旷<e摧nd壶l;ch凝='夸n'撇;br谦ea扫k;}}}if航(c蚀h=谋='袭y'赤)填{ch床an涛gd灯at各a(代i)虹;/冰/根通据进片程需卖求量握变换策资源sh铺ow器da若ta真()乘;/族/根绢据进孕程需领求量劈燕显示策变换用后的虾资源sa叙fe置()尺;/踩/根死据进静程需但求量较进行做银行递家算揉法判胶断}}vo肉id迟a庸dd该re添so登ur矩ce侦s(尿){斜//超添加访资源in吼t胀n,叔fl书ag章;co嘱ut宋<<瓦"请竿输入捐需要妻添加耍资源遭种类益的数退量:塘";ci似n>帐>n猫;fl作ag途=N弦;N=慌N+罩n;fo丸r(连in粥t朋i=罪0;伞i<研n;更i+慰+)洁{co夏ut愈<<威"名惹称:恭";ci番n>鲜>n滋am辣e[咱fl跳ag悄];co鸟ut炕<<折"数姐量:草";ci幼n>酷>A在va以li蝇ab气le块[f来la若g+壮+]渴;}sh找ow忽da械ta叹()刮;sa逃fe匀()除;}vo拢id其d哥el尺re运so锈ur沫ce蹲s(卸){融//朽删除涉资源ch两ar孟m嘴in猫g;in逆t阳i,盯fl见ag浸=1程;co黎ut铃<<倾"请馒输入杜需要糖删除劲的资忙源名蔽称:串";do您{ci奸n>仁>m颠in钥g;fo清r(爪i=德0;械i<类N;鸦i+方+)if陈(m博in皇g=逼=n斜am不e[液i]师){fl轧ag乓=0携;br他ea旷k;}if编(i妹==牵N)co赔ut胜<<绍"该夺资源月名称蒸不存脚在,嫁请重缠新输亦入:桨";}wh察il亭e(沈fl妈ag支);fo魄r(蛮in侧t勒j=献i;幻玉j<脸N-示1;垃j+禁+){na花me显[j箱]=傅na边me趋[j任+1勇];Av得al带ia妨bl击e[扒j]书=A凶va料li忠ab沸le混[j潜+1锁];}N=鲁N-锅1;sh纠ow鸟da哪ta贞()宇;sa乳fe澡()糠;}vo朗id霞c驻ha站ng颠er狸es荐ou俩rc防es青()膏{/窄/修舟改资秩源函陕数co商ut铃<<弊"系帐统目足前可非用的充资源贪[A真va弹li松ab旧le井]:腐"<抗<e估nd洞l;fo钓r(松in副t北i=区0;煮i<辉N;锯i+展+)co短ut惜<<昌na铜me盼[i胶]<艳<"袭:"旦<<召Av仁al压ia窃bl拣e[躲i]忠<<梯en磨dl脱;co敲ut坝<<传"输铸入系遭统可乔用资贴源[旧Av晨al辩ia牺bl碑e]悼:"农<<避en夕dl六;ci榜n>他>A驾va胀li五ab糠le袭[0粗]>耽>A反va慰li睬ab土le冈[1午]>温>A讽va狐li渗ab添le毯[2捧];co甚ut贪<<兔"经轨修改汗后的思系统傅可用渗资源疮为"钻<<河en夸dl派;fo哗r雪(i蚕nt我k权=0螺;k神<N服;k到++移)co哄ut稠<<陷na咱me亲[k厘]<符<"风:"颈<<战Av敬al图ia离bl呀e[娇k]尼<<社en恶dl敏;sh虾ow箭da跑ta港()主;sa荐fe庆()纤;}vo事id摄a捡dd线pr殿oc序es讯s(仗){垃//细添加谣作业in台t着fl楚ag服=M疏;M=温M+盛1;co够ut现<<讨"请冰输入嫂该作菜业的坛最打闻需求馅量[逐Ma鹊x]我"<覆<e防nd辛l;fo销r(左in其t吴i=窜0;闪i<堤N;勿i+仗+)抽{co纽奉ut替<<伐na扁me芹[i桂]<催<"蒸:"读;ci他n>邪>M补ax漠[f德la币g]盗[i势];Ne育ed脉[f承la仁g]敲[i犯]=兄Ma线x[牲fl悼ag盏][替i]负-A突ll啦oc田at赠io闭n[馆fl圣ag塘][侦i]湖;}sh月ow唐da彻ta符()蝇;sa跃fe坝()拘;}in吐t碰ma伯in通()达//炕主函识数{in羡t次i,每j,展nu伸mb禾er悠,c残ho耀ic嚼e,丹m,坡n,捉fl冰ag沉;ch只ar棋m捷in吓g;co朴ut霸<<岁"*敞**样**俭**易**慌**侧**悼**晋**杨单处狭理机吧系统床进程耕调度木实现届**尘**叫**您**终**洒**番**龙**恩*"渴<<吓en亚dl地;co干ut淹<<政"请耀首先君输入青系统辉可供她资源园种类慈的数盟量:叉";ci桐n>固>n牺;N=咳n;fo兆r(走i=泉0;鱼i<雕n;答i+毛+){co绳ut姐<<驱"资爷源"统<<凭i+厘1<伪<"鹿的名部称:葛";ci萄n>叼>m盯in抚g;na见me移[i轿]=肾mi谊ng尺;co宅ut雷<<秃"资胀源的钢数量储:"均;ci需n>饿>n例um见be扶r;Av米al顶ia用bl租e[骗i]躲=n已um愚be责r;}co纳ut棒<<咬en井dl析;co般ut桑<<茂"请舒输入嫌作业铃的数咬量:脆";ci盐n>它>m禾;M=啦m;co德ut树<<啦"请燃输入数各进菠程的苗最大岗需求喘量(音"<凯<m躬<<喊"*瓶"<亭<n悠<<辉"矩欢阵)先[M艘ax涌]:腾"<栽<e翻nd仁l;fo棵r(箩i=峡0;低i<梳m;乐i+苍+)fo卖r(粮j=耕0;石j<隶n;今j+畜+)ci蛮n>脉>M此ax聋[i版][撇j]迟;do缩慧{fl订ag馒=0停;co耕ut窃<<滴"请红输入皆各进握程已张经申耕请的健资源浩量(哨"<鼻<m居<<潮"*拜"<压<n童<<疫"矩部阵)萄[A橡ll胖oc驰at帐io上n]俊:"正<<秆en疯dl谈;fo搂r(伐i=隔0;惨i<肉m;采i+矮+)fo盐r(捡j=鞠0;紧j<栋n;跳j+冒+)初{ci搬n>吓>A咏ll缓oc某at斤io肌n[婚i]速[j删];if维(A圾ll锻oc求at断io驴n[亭i]躬[j粥]>慢Ma塑x[疫i]制[j香])fl稍ag称=1牲;Ne财ed刃[i保][捷j]陷=M含ax欺[i挡][观j]坚-A戚ll盾oc普at结io阀n[滤i]同[j帮];}if娇(f宽la忠g)co远ut永<<去"申绣请的液资源船大于嚷最大鄙需求渡量,丽请重伏新输际入!由\n赔";}wh妙il炉e(缺fl救ag竖);sh捞ow爸da柱ta疮()车;/庙/显告示各盖种资值源sa倾fe鹿()斤;/唤/用英银行埋家算妨法判捞定系押统是棕否安凭全wh范il贫e(联ch迹oi桶ce之){co话ut稻<<驱"*标**糠**型**舞**切**蔑**句*银畅行家码算法钥演示米**怠**美**爬**枯**温**狱**死*"哥<<产en概dl桃;co饲ut巩<<暑"遇1:能增加天资源飞"<协<e滨nd浴l;co蹄ut缸<<销"说2:蔬删除孝资源旨"<蔽<e悉nd愚l;co讽ut票<<之"雅3:传修改学资源疏"<索<e苏nd街l;co心ut腿<<招"热4:衔分配太资源墓"<刑<e甲nd精l;co叉ut罢<<波"录5:洁增加构作业复"<商<e哪nd昂l;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度个人劳务合同(健康养生)
- 2025年度安全评价研究股权合作协议
- 买卖家具写合同范例
- 公司担保还款合同范例
- 乡村振兴土地合同范例
- 上海开危化品运输合同范例
- 共同开店协议合同范例
- 出国挖机劳务合同范例
- 公费医学生专科合同范例
- 借款合同范例不用利息
- 建设工程施工专业分包合同 GF-2003-0213
- 2024解析:第二章声现象-讲核心(解析版)
- 2024解析:第十章 浮力综合应用-讲核心(解析版)
- Unit4BodylanguageUsingLanguage肢体语言在续写中的运用课件高中英语人教版选择性
- 大数据与人工智能营销(南昌大学)知到智慧树章节答案
- 《让座》(课件)西师大版音乐二年级上册
- 广告创作与视觉传媒考核试卷
- 2024年江西省公务员考试《行测》真题及答案解析
- 医学装备管理工作总结
- 外篷房安装施工及售后服务方案
- 2024-2025学年湖南省雅礼集团高二(上)第一次月考数学试卷(含答案)
评论
0/150
提交评论