《操作系统实验之银行家算法.docx》由会员分享,可在线阅读,更多相关《操作系统实验之银行家算法.docx(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、操作系统实验之银行家算法三、实验报告内容1、银行家算法和安全性检查算法原理银行家算法:银行家算法最初级原为银行系统设计,以确保银行在发放现金贷款时,不会发生不能知足所有客户需要的情况。在OS设计中,可以以用它来避免死锁。为实现银行家算法,每个新进程在进入系统时它必须申明在运行经过中,可能需要的每种资源类型的最大单元数目,其数目不应超过系统所拥有的资源总量。当某一进程请求时,系统会自动判定请求量能否小于进程最大所需,同时判定请求量能否小于当前系统资源剩余量。若两项均知足,则系统试分配资源并执行安全性检查算法。安全性检查算法:安全性检查算法用于检查系统进行资源分配后能否安全,若安全系统才能够执行此
2、次分配;若不安全,则系统不执行此次分配。安全性检查算法原理为:在系统试分配资源后,算法从现有进程列表寻找出一个可执行的进程进行执行,执行完成后回收进程占用资源;进而寻找下一个可执行进程。当进程需求量大于系统可分配量时,进程无法执行。当所有进程均可执行,则产生一个安全执行序列,系统资源分配成功。若进程无法全部执行,即无法找到一条安全序列,则讲明系统在分配资源后会不安全,所以此次分配失败。2、程序流程图3、程序及注释#include/全局变量定义intAvailable100;/可利用资源数组intMax50100;/最大需求矩阵intAllocation50100;/分配矩阵intNeed501
3、00;/需求矩阵intRequest50100;/M个进程还需要N类资源的资源量intFinish50;intp50;intm,n;/M个进程,N类资源/安全性算法intSafe()inti,j,l=0;intWork100;/可利用资源数组for(i=0;iWorki=Availablei;for(i=0;iFinishi=0;for(i=0;iif(Finishi=1)continue;elsefor(j=0;jif(NeedijWorkj)break;if(j=n)Finishi=1;for(intk=0;kWorkk+=Allocationik;pl+=i;i=-1;elseconti
4、nue;if(l=m)cout系统是安全的ncout系统安全序列是:nfor(i=0;icoutif(i!=l-1)cout-coutnreturn1;/银行家算法intmain()inti,j,mi;cout输入进程的数目:ncinm;cout输入资源的种类:ncinn;cout输入每个进程最多所需的各类资源数,根据for(i=0;ifor(j=0;jcinMaxij;cout输入每个进程已经分配的各类资源数,根据for(i=0;ifor(j=0;jcinAllocationij;Needij=Maxij-Allocationij;if(Needij0)cout你输入的第j-;continu
5、e;cout请输入各个资源现有的数目:nfor(i=0;icinAvailablei;Safe();while(1)cout输入要申请的资源的进程号:(第一个进程号为0,第二个进程号为1,依此类推)ncinmi;cout输入进程所请求的各个资源的数量nfor(i=0;icinRequestmii;for(i=0;iif(RequestmiiNeedmii)cout所请求资源数超过进程的需求量!nreturn0;if(RequestmiiAvailablei)cout所请求资源数超过系统所有的资源数!nreturn0;for(i=0;iAvailablei-=Requestmii;Allocat
6、ionmii+=Requestmii;Needmii-=Requestmii;if(Safe()cout同意分配请求nelsecoutSORRY()你的请求被拒绝nfor(i=0;iAvailablei+=Requestmii;Allocationmii-=Requestmii;Needmii+=Requestmii;for(i=0;iFinishi=0;charFlag;/标志位cout能否再次请求分配?是请按Y/y,否请按N/nwhile(1)cinFlag;if(Flag=Y|Flag=y|Flag=N|Flag=n)break;elsecout请按要求重新输入:ncontinue;if(Flag=Y|Flag=y)continue;elsebreak;4、运行结果以及结论图示为题目所给定的条件下的程序运行结果。可看出在现有分配情况下,该系统安全。下列图为,P1提出请求后,程序的运行结果,可知,系统仍然安全,所以系统能够知足请求。