2023年计算机操作系统银行家算法实验报告_第1页
2023年计算机操作系统银行家算法实验报告_第2页
2023年计算机操作系统银行家算法实验报告_第3页
2023年计算机操作系统银行家算法实验报告_第4页
2023年计算机操作系统银行家算法实验报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

计算机操作系统实验报告一、实验名称:银行家算法二、实验目的:银行家算法是避免死锁的一种重要方法,通过编写一个简朴的银行家算法程序,加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实行方法。三、问题分析与设计:1、算法思绪:先对用户提出的请求进行合法性检查,即检查请求是否大于需要的,是否大于可运用的。若请求合法,则进行预分派,对分派后的状态调用安全性算法进行检查。若安全,则分派;若不安全,则拒绝申请,恢复到本来的状态,拒绝申请。2.银行家算法环节:(1)假如RequestiVor=Need,则转向环节(2);否贝U,认为犯错,由于它所需要的资源数已超过它所宣布的最大值。(2)假如Request<or=Avai1ab1e,则转向环节(3);否则,表达系统中尚无足够的资源,进程必须等待。(3)系统试探把规定的资源分派给进程Pi,并修改下面数据结构中的数值:银行家算法请输入可利用资源向量Available<格式:a,b,c)3,3,2[辜菖入最大需求数Max(格式:a,b,c〉7,5%进程U3,2.2进程2:9,0,2进程3:2,2,2进程4:4,3,2请输入分配数A11。cation〈格式:a,b,c>遹呈00,1,0进程]2,0,0进程23,0,2进程32,1,1进程4741安至性检查请输入一个序列:1,3,4,2,0这个系统安全?请输入Request进程:1该进程Request(a,b,c〉1,0,2资源分配成功,五,实验总结多个进程同时运营时,系统根据各类系统资源的最大需求和各类系统的剩余资源为进程安排安全序列,使得系统能快速且安全地运营进程,不至发生死锁。银行家算法是避免死锁的重要方法,其思绪在很多方面都非常值得我们来学习借鉴。输5,程2,程0,程2,程3,灌1,程0,程0,程1,程4,全输3,个输20312223242A/0010223143汕进歹**t序全les查个0安检一2,统Re^<4,文,0.2源分配成功?Avai1able=Avai1ab1e-Request[i];Allocation=A1location+Request;Need=Need-Request;(4)系统执行安全性算法,检查本次资源分派后,系统是否处在安全状态。3、安全性算法环节:(1)设立两个向量①工作向量Work。它表达系统可提供进程继续运营所需要的各类资源数目,执行安全算法开始时,Work=Allocation;②布尔向量Finish。它表达系统是否有足够的资源分派给进程,使之运营完毕,开始时先做Finish[i]=false,当有足够资源分派给进程时,令Finish[i]=trueo(2)从进程集合中找到一个能满足下述条件的进程:①Finish[i]=false②Need<or=Work如找到,执行环节(3);否贝山执行环节(4)。(3)当进程P获得资源后,可顺利执行,直至完毕,并释放出分派给它的资源,故应执行:Work=Work+Allocation;Finish[i]=true;转向环节(2)。(4)假如所有进程的Finish口]=true,则表达系统处在安全状态;否则,系统处在不安全状态。四.程序源代码:inc1ude<stdio.h>defineW5〃最大进程数归5defineR3〃最大资源总数=3intAvailable[3];〃可运用资源向量intMax[5][3];//最大需求矩阵intAllocation[5][3];//分派矩阵intNeed[5][3];〃需求矩阵intRequest[3];〃进程请求向量voiddispose()printf("请输入可运用资源向量Avai1able(格式:a,b,c)\n");scanf(〃%d,%d,%d〃,&Availab1e[0],&Available[1],&Avai1ab1e[2]);printf(n请输入最大需求数Max(格式:a,b,c)\n");for(intj=0;j<5;j++)(printf(〃进程%d:\n〃,j);scanf(〃%d,%d,%d〃,&Max[j][0],[1],&Max[j][2]);}printf("请输入分派数Allocation(格式:a,b,c)\n");for(j=0;j<5;j++)printf(〃进程%八11",j);scanf(H%d,%d,%d,z,&AI1ocationEj][0],&A11ocation[j][1],&Allocation[j][2]);"/输入Max[5][3],Available[5][3],Allocation[5][3]for(j=0;j<5;j++)for(inti=0;i<3;i++)Need[j][i]=Max[j][i]-A11ocati。n[j][i];〃求出Need[5]⑶)main()(printfC银行家算法\n〃);dispose();printf(〃安全性检查'n〃);intWork[3];〃系统可提供进程继续运营所需的各类资源数charFinish[5];〃表达系统是否有足够的资源分派for(inti=0;iV5;i++)Finish[i]=,f';for(intk=0;k<3;k++)Work[k]=Avai1able[k];intq[5];for(intx=0;x<50;x++){printf(〃请输入一个序列:\n〃);scanfC%d,%d,%d,%d,%d,z,&q[0],&q[1,&qfor(i=0;i<5;i++)(if((Need[q[i]][0]<=Work[0])&&(Need[q[i]]⑴<=Work[1])&&(Need[q[i]][2]<=Work[2]))//比较Need[i][j]与Work[j]。for(k=0;k<3;k++)gWork[k]=Work[k]+Allocation[q[i]][k];Finish[i]=,t';if((Finish[0]='t')&&(Finish[1]=='t')&&(Finish[2]=='t')&&(Finish[3]=='t')&&(Finish[4]=='t'))//通过Finish[i]判断系统是否安全©break;e1se叩rintf("此序列不是安全序列,请重新输入一个序列!\n〃);if(x=49)oreturn0;}printf("这个系统安全!\n〃);inta;printf(〃请输入Request进程:\n〃);scanf("%d〃,&a);printf(〃该进程Request(a,b,c)\n〃);scanf(,z%d,%d,%dz,,&Request[0],&Request[1],&Request[2]);//输入请求量Request[3]if((Request[0]<=Need[a][0])&&(Request[1]<=Need[a][1])&&(Request[2]<=Need[a][2]))〃判断Request[i]<=Need[a][i](if((Request[0]<=Need[a][0])&&(Request[0]<=Need[a][1])&&(Request[0]<=Need[a][2]))〃判断Request[i]<=Available[a][i]ofor(intk=0;k<3;k++)(^Available[k]=Availab1e[k]-Request[k];。Allocation[a][k]=A11ocation[a][k]+Request[k];°Need[a][k]=Need[a][k]-Reque

温馨提示

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

评论

0/150

提交评论