2023年计算机操作系统实验二银行家算法实验报告书.pdf
旗海工学浣奸算机学浣实验报告书课 程 名:操作系统原理A题 目:银行家算法_ _ _ _ _ _ _ _ _ _ _班 级:_ _ _ _ _ _Z计12 1 _学 号:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _姓 名:薛慧君_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _评语:成绩:指导教师:批 阅 时 间:年 目H操作系统原理实验一一银行家算法实验报告1目的与规定:1)本实验目的是通过使用银行家算法实现系统资源的分派和安全性检查模拟,提高学生对操作系统资源分派功能的深刻理解,并培养学生对操作系统开发的爱好与应用能力;2)实验前必须认真阅读和理解银行家算法的基本原理和实现方法;3)独立使用C或V C+编程语言编写银行家算法模拟程序;4)按照实验题目规定独立对的地完毕实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运营结果)5)于202 3年5月1 0日以前提交本次实验报告(含电子和纸质报告,由学习委员以班为单位统一打包提交)。2实验内容或题目1)设计五个进程 P0,P 1 ,P 2,P3,P4共享三类资源 A,B,C的系统,A,B,C 的资源总数量分别为10,5,7。(参考书上用例)2)并行进程可动态地申请资源和释放资源(程序交互输入申请或释放资源数量),系统按各进程的申请动态地分派资源。3)每当进程动态申请资源或释放资源时,模拟程序应能及时显示或打印各个进程在此时刻的资源分派表、系统可用资源量和安全序列等资源分派信息和安全检查信息。4)本次实验内容(项目)的具体说明以及规定请参见实验指导书。3实验环节与源程序ttincludettinclude#deFine M 5 定义进程数|d e fin e N 3 定义资源数ttdeFine False 0ttdeFine True 1in t M a x 3=7,5,3,3,2,2 ,;in t fiu aliab le-;系统可用资源in t A llo c a tio n H 3=(0 J,g,2,O,6,3,%2,2,1,1,;系统已分配资源in t还需要资源in t Request3;uoid showdata。显示资源矩阵in t i,j;p rin tf(“系统可用的资源:n”);printFC resouce:);for(j=8;jN;j+)p rin tf(“%d,”,A u a lia b le j);输出分配资源p rin tf(n );p rin tf(“各进程的资源需求:n);For(i=0;iM;i+)p rin tf(p rtd:,i);for(j=0;jN;j+)p rin tF(n);p rin tf(“各进程得到资源For(i=0;iM;i+)printF(-pr%d:i);For(j=0;jN;j+)p rin tf 输出已分配资源数p rin tf(n );p rin tf(“各进程还需求资源:n”);for(i=0;iM;i+)p rin tf(p rtd:,i);For(j=0;jN;j+)p rin tf(“d J.N e e c H iU j);输出还需要资源数p rin tF(,n,i);in t changdata(int i)进行资源分配in t j;For(j=0;jreturn 1;in t ch k e rr()安全性算法in t W ork3,FinishM=0,tenpM;in t i9k=0,m,apply;in t j;W orkO=Aualiable0;W ork1=Aualiable1;W ork2=A ualiable2;f o r(i=0;i M;i+)apply”;F o r(j=8;j 3;j+)i f (Finishi=False&N eedij=W orkj)apply+;if(apply=3)For(m=0;m3;n+)W orkn=W orkn+A llocationin /变分配数F in ish i=T ru e;tem pk=i;i=-1;k+;elseiF(F in ish i=F alse)if(i=M-1)p r in tf(“基统瓷遮分配成功,”);如果安全,输出成功p rin tf(分配的序列:n fo r(i=G;i M;i+)输出运行进程数组return 0;:oid share()利用银行家算法对申请资源对进行判定char ch;in t i=0,i=0;in t i=0,j=0;ch=y;p rin tf(“n请输入要求分配的浪源进程号从(0 to 4):);scanf(“%d”,&i);输入须申请的资源号p rin tf(“请输入进程%d申请的资源:F o r(j=0;jFor(j=0;jN;j+)Need i j )判断申请是否大于需求,若大于则出错,p rin tf(“进程额申请的资源大于它需要的资源”,i);p rin tF(erro r?n);ch=*n;break;elsei f (Request j A u a lia b le j)判断申请是否大于当前资源,若大于则 出错p rin tf(“进 程 申 请 的 资 源 大 于available”,i);p rin tf(erro r?n);ch=n;break;iF(ch=y)changdata(i);/showdata();根c h k e rr();根据翳lii鬻uoid Reuision()p rin tf(“请选择:1:修改进程还需要的资源2:修改进程可用资源”);in t choicel;scanF(,%d,&choice1);if(choice1=1)p rin tf(输入要修改的资源号(0-4)”);in t p;scanf(%d,&p);p rin tf(”输入修改后进程还需要的资源(1,1,1八n“);scanF(,%d,%dAd,&Needp0,&Needp1 ,&Needp2);p rin tf L经修改后各进程还需求资源:心);For(in t a=0;aM;a+)printf(pr%d:,a);Fo r(in t b=0;bif(choice1=2)p rin tf(输入系统可用资源EX(1,1,1八n“);scanF(%d,%d,%d,&Aualiable0,&Aualiable1,&A ualiable2);p rin tf(“经修改后的系统可用资源为n”);for(in t k=0;kin t m ain()主函数(in t choice;shuuda ta();显示各种资源chkerr();用银行景靠在驹定系统是否安全dop r in tf(“n输入要进行的操作1:分 配 资 源2:修 改 资 源3:离开“);scanF(a%d,&choice);iF(choice=1)iF(choice=2)i f(choice=3)iF(choice=4)break;w h ile(choice=1)|(choice=2)|(choice=3);return 1;4测试数据与实验结果(可以抓图粘贴)(1)程序运营时选择1 ,输入进程p r l 的请求向量(1,0,2)通过程序计算,资源分派成功。资源具体分派过程如下图所示。得出一个安全序列为p r 1 ,p r 3,p r 0,p r 2,p r 4 o(2)进程prO请求资源:prO发出请求向量2,2),由于R e q u e s t。不大于Need。,R e qu e s tO不大于A v ailable 0。系统试探着为它分派资源。由结果可知,系统不安全。则系统不分派资源,并回收系统预分派给prO的资源。(3)程序运营时选择1,进行系统资源的分派。(4)修改资源分派:J:计算叽操作系统 实验二 shiyan22Debug2.exe。回看系6改6,要可UC程73入选入4,修4,入统so进8:1:进行的操作1:分配资源2::1:渗散进程还需要的资源统可用贯源作:求操源6,需的资4,源,.裔3,资,3,2进用e:的,5,2修改浪源3:黑,开22:修改进程可用资源2修改资源3:离开3可资用为源1:1,2,2,:6.0,0.:0,1,1,:4,3,1,输入要进行的操作1:分配资源2:修改资源3,离开5结果分析与实验体会在编写程序不断出现错误和改正的过程序中加深了我对银行家算法的理解。这个系统的功能基本能满足规定,完毕了对资源的修改尚有用银行家算法和安全性算法来检查是否允许分派资源给进程。程序重要由两部分组成。第一部分是银行家算法,第二部分是安全性算法。银行家算法1.假 如 Re q u e s t =N e e d,贝 l j 转向2;否则,犯错2.假如Re q ue s t=A va i Ta b l e,则转向3,否则等待3.系统试探分派请求的资源给进程4.系统执行安全性算法安全性算法1.设立两个向量(1 ).工作向量:W o r k=A v a i 1 a b l e (表达系统可提供应进程继续运营所需要的各类资源数目)(2).F i n is h:表达系统是否有足够资源分派给进程(Tr ue:有;F a l s e:没有).初始化为F a is e2.若 F i n i s h i =F a l s e&N e e d =W o r k,则执行3;否则执行4(1 为资源类别)3.进程P获得第i类资源,则顺利执行直至完毕!并释放资源:W o r k=W o r k+A l l o c a tio n;F i n is h i =t r ue;转 24 .若所有进程的F in is h i=t r u e,则表达系统安全;否则,不安全!