资源描述:
《2019操作系统实验报告(三)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、操作系统实验报告(三) XXXX大学 实验报告 实验名称 实验三银行家算法课程名称 操作系统 专业班级: 学生姓名: 学 号: 成 绩: 指导教师: 实验日期:
2、
3、
4、
5、 华北电力大学实验报告 一、实验目的及要求1、实验目的熟悉银行家算法,理解系统产生死锁的原因及避免死锁的方法,加深记意。2、实验要求用高级语言编写和调试一个描述银行家算法的程序。设计五个进程{P0,P1,P2,P3,P4}共享三类资源{A,B,C}的系统,{A,B,C}的资源数量分别为10,5,7。进程可动态地申请资
6、源和释放资源,系统按各进程的申请动态地分配资源。要求程序具有显示和打印各进程的某一时刻的资源分配表和安全序列;显示和打印各进程依次要求申请的资源号以及为某进程分配资源后的有关资源数据。二、所用仪器、设备PC机三、实验原理利用银行家算法避免死锁1、银行家算法中的数据结构可利用资源向量Available最大需求规阵Max分配矩阵Allocation需求矩阵Need2、银行家算法如果Requesti<或=Need,则转向步骤2;否则,认为出错,因为它所需要的资源数已超过它所宣布的最大值。如果Request<或=Availab
7、le,则转向步骤;否则,表示系统中尚无足够的资源,P1必须等待。系统试探把要求的资源分配给进程Pi,并修改下面数据结构中的数值:Available:=Available-Requesti;Allocation:=Allocationi+Request;Needi:=Needi-request;(4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。3、安全性算法系统所执行的安全性算法可描述如下:设置两个向量①工作向量Work。它表示系统可提供进程继续运行所需要的各类资源数目,它含有m个元素,执行安全算法开始
8、时,Work:=Allocation;②Finish。它表示系统是否有足够的资源分配给进程,使之运行完成,开始时先做Finish[i]:=false;当有足够资源分配给进程时,令Finish[i]:=true。从进程集合中找到一个能满足下述条件的进程:①Finish[i]:=false②NeedAvailable(2,3,0),让P4等待。P0请求资源P0发出请求向量Request0(0,2,0),系统按银行家算法进行检查:Request0(o,2,0)<或=Need0(7,4,3));进行安全性检查可用资源Avail
9、able{2,1,0}已不能满足任何进程的需要,故系统进入不安全状态,此时系统不分配资源。如果在银行家算法中,把P0发出的请求向量改为Request(0,1,0),系统是否能将资源分配给它,请读者考虑四、实验方法与步骤先定义好每个进程的MAX,ALLOCTION,NEED,AVAILABLE等:intP_finish[5]={0,0,0,0,0}; //已完成的进程序列intP_work[5]; //进程工作序列intP_max[3]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}
10、}; //进程最大需求intP_Alloctioan[3]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};//进程已得到的intP_need[3]={{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}}; //进程还需分配的intSys_resource[3]={3,3,2};定义需要的向量:inttest(intavaliable[m],intneed[n][m],intallocation[n][m],intfinish[n], intnum,
11、intrequest[m])判断安全性程序:for(i=0;i<5;i++) //(如果五个i都是一,则为安全的,否则不安全) bj=finish[i]+bj; if(bj==5) { cout<<本次安全序列: for(i=0;i<5;i++) cout<<进程 return1; } else return0;//第页共页华北电力大学实验报告 检查分配以后系统是否处于安全状态:for(j=0;j<3;j++) { available1[j]=available1[j]-rq[1][
12、2]; allocation1[i][j]=allocation1[i][j]+rq[i][j]; need1[i][j]=need1[i][j]-rq[i][j]; } } sf=safe(jcbh1,allocation1,need1,available1);五、实验结果与数据处理此程序的1为P0,2为P1,以此类推