操作系统银行家算法465.docx

上传人:you****now 文档编号:48067912 上传时间:2022-10-05 格式:DOCX 页数:21 大小:56.89KB
返回 下载 相关 举报
操作系统银行家算法465.docx_第1页
第1页 / 共21页
操作系统银行家算法465.docx_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《操作系统银行家算法465.docx》由会员分享,可在线阅读,更多相关《操作系统银行家算法465.docx(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、淮海工学院计算算机工程学院院实验报告书课程名: 计计算机操作系系统 题 目: 实验验二 银行家算法法 班 级: 姓 名: 评语:成绩: 指导教师: 批阅时间: 年 月 日 UML理论与实践实验报告 - 20 -实验二 银行家家算法实验目的和要求求应用银行家算法法验证进程安安全性检查及及分配资源编制模拟银行家家算法的程序序,并以以下下例子验证程程序的正确性性。实验环境1PC微机。2Windoows 操作作系统。3C/C+/VB开发发集成环境。实验学时 2学时时,必做实验验实验内容和步骤骤1)根据算法流流程图编制可可执行程序2)用以下两个个例子验证程程序的正确性性。3)按照上述两两个例子,输输出执

2、行的结结果。算法流程图银行家算法:安全性算法:【例1】某系统统有A、B、CC、D这4类类资源供5个个进程共享,进进程对资源的的需求和分配配情况如下表表所示。现在在系统中A、BB、C、D类类资源分别还还剩1、5、22、0个,请请按银行家算算法回答下列列问题:进程已占资源最大需求数ABCDABCDP100120012P210001750P313542356P406320652P500140656(1) 现在在系统是否处处于安全状态态?(2) 如果现现在进程P22提出需要(0,4,22,0)个资资源的请求,系系统能否满足足它的请求?【例2】用银行行家算法考虑虑下列系统状状态 :进程 分配配矩阵 最大

3、需求求矩阵 资资源总数矩阵阵A 33 0 1 1 4 1 11 1 6 3 4 2B 00 1 0 0 0 2 11 2C 11 1 1 0 4 2 11 0D 11 1 0 1 1 1 11 1E 00 0 0 0 2 1 11 0问系统是否安全全?若进程BB请求(0,0,1,00),可否立立即分配?此此后进程E也也请求(0,0,1,00),可否分分配给它?通过运行程序发发现,例1当当中的系统处处于不安全状状态,进程PP2提出的请请求无法实现现;例2当中中的系统处于于安全状态,进进程B提出的的请求能实现现,此后进程程E的请求也也能实现。源代码#includde#definee N 200#d

4、efinee M 200using nnamesppace sstd;int f(iint aNM,int bNM,innt m,iint k) intt j; for(j=0;jjbkk-1jj)retturn 00; reeturn 1;int g(iint aNM,int b,iint m,int kk) int j; for(j=0;jjbjj)retturn 00; reeturn 1;int h(iint a,intt n) for(int ii=0;in;i+) iif(!ai)reeturn 0; reeturn 1;int p(iint a,intt bNM,iint m,i

5、nt kk) int j; for(j=0;jjbbk-1j)rreturnn 0; reeturn 1;int q(iint a,intt b,int mm) int j; for(j=0;jjbjj)retturn 00; reeturn 1;int saffe(intt FiniishN,int WorkM,innt NeeedNM,innt AlllocatiionNM,iint n,int mm) intt i,j,k; intt tN; forr(i=0;in;ii+) tti=11; coutt安全全性检查!enddl; for(i=0;iin;)/ 首先找找到一个满足足条件的进

6、程程 if(Finisshi=0)&g(Neeed,Worrk,m,ii) kk=i; tti=00; ccoutp(k+1):enddl; cooutWorkm:; ffor(j=0;jmm;j+) couutWoorkj ; Worrkj=Workj+Alllocattioniij; Finnishii=1; ccoutendl; cooutNeedm:; for(j=0;jjm;j+) couutNeeedij ; coutendll; couutAAllocaationm:; for(j=0;jjm;j+) couutAlllocattioniij ; couttenddl; ccou

7、t(Worrk+Alllocatiion)m:; for(j=0;jjm;j+) couutWoorkj ; couttenddl; cooutFinisshk+1:; couutFiinishi ; coouteendl; breakk; elsee ii+; if(gg(Needd,Workk,m,k)/依次次找到满足条条件的后面几几个进程 ffor(i=0;inn;i+) iif(tii) if(g(Neeed,Worrk,m,ii) couutpp(ii+1):endl; couutWWorkm:; ffor(j=0;jmm;j+) couutWoorkj ; Worrkj=Workj

8、+Alllocattioniij; Finnishii=1; ccoutendl; couttNeeedm:; for(j=0;jjm;j+) couutNeeedij ; ccoutendl; ccoutAlloocatioonm:; for(j=0;jjm;j+) couutAlllocattioniij ; ccoutendl; cout(Woork+Alllocattion)m:; ffor(j=0;jmm;j+) couttWorrkj ; coutendll; ccoutFiniishi+1:; couutFiinishi ; couutenndl; ti=0; elsee rre

9、turnn 0; if(h(Fiinish,n)reeturn 1;/系系统处于安全全状态 elsee retuurn 0;/系统处处于不安全状状态 void r(int FFinishhN,iint WoorkM,int AvaillableM,innt NeeedNM,innt AlllocatiionNM,iint MaaxNM,innt n,iint m) int RequeestM; charr b; int i,j,kk; couutn要申请资资源,请按y或YY,否则按按n或Nb; if(bb!=y&b!=Y) if(safe(Finissh,Worrk,Neeed,Allloca

10、tiion,n,m) ccout此时刻系系统安全!n; eelse cout此时刻刻系统不安全全!n; elsee couutn请输入申申请资源的进进程编号(11,2,nn):k; whiile(kn) ccout您输入了了错误的进程程号,请核查查后重新输入入:kk; cooutn请输入入进程p(k)申请各各类资源的数数量:endl; for (j=0; jReqquestj; iif(p(RRequesst,Neeed,m,kk) if(q(Reqquest,Availlable,m) forr(j=0;jm;jj+) Avaailabllej=Availlablej-Reequesttj;

11、 Alllocatiionk-1j=Alloocatioonk-11j+Requeestj; Neeedk-11j=Needk-1j-Reequesttj; Workj=Avvailabblej; couut试试分配!endll; couut各各种资源可利利用的数量AAvailaablem: enddl; for (j=0; jm; j+) couutAvvailabblej ; coutendll; coutn已已分配资源AAllocaationm: enndl; for (i=0; in; i+) forr (j=00; jmm; j+) coutAlloocatioonij ; coou

12、teendl; coutn最最大需求矩阵阵Maxnm: endll; for (i=0; in; i+) forr (j=00; jmm; j+) coutMaxij ; coouteendl; ccoutn需求求矩阵Neeednmm: eendl; for (i=0; in; i+) forr (j=00; jmm; j+) coutNeeddijj ; coouteendl; if (ssafe(FFinishh,Workk,Needd,Alloocatioon,n,mm) /判断当当前状态的安安全性 cout系统处处于安全状态态!; cooutn申请资资源成功!eendl; eelse

13、couutn当前状态态不安全!; /恢恢复数据 forr (j=00; jmm; j+) Availlablej=Avvailabblej+Requuestjj; Alloccationnk-1j=AAllocaationk-1j-Reequesttj; Needk-1j=Neeedk-1j+Requuestjj; Workj=Avvailabblej; forr(i=0; in; i+) Finisshi=0; coutn恢恢复数据:enddl;/显显示输入各数数组的值 ccout各种资源源可利用的数数量Avaiilableemm: eendl; for (j=0; jm; j+) couu

14、tAvvailabblej ; coutendll; coutn已已分配资源AAllocaationm: enndl; for (i=0; in; i+) forr (j=00; jmm; j+) coutAlloocatioonij ; coouteendl; coutn最最大需求矩阵阵Maxnm: endll; for (i=0; in; i+) forr (j=00; jmm; j+) coutMaxij ; coouteendl; coutn需需求矩阵Neeednm: endl; for (i=0; in; i+) forr (j=00; jmm; j+) coutNeeddijj ;

15、 coouteendl; coout系统中尚无无足够的资源源满足进程ppkk的的申请,pk必须须等待!endll; elsee coutt系统统中尚无足够够的资源满足足进程pk的申请请,pk必须等待待!eendl; else coout出错,进程程所需要的资资源数目已超超过它所宣布布的最大值!enndl; void maain() coutt-enndl; coutt-模拟银行行家算法-eendl; coutt-enndl; coutt-江之之风海之韵-endll; coutt-QuQQu-eendl; coutt-enndl; int AvaillableM; int MaxNNM; int

16、 AlloccationnNMM; int NeedNM; intt WorkkM; int FinisshN; int i,j,nn,m; /定义义全局变量 couttn; couutm; coutt输入入各种资源可可利用的数量量Availlablem: enndl; for (j=0; jAAvailaablejj; WWorkjj=Avaailabllej;/初始化化Workj couttnn输入各进程程对各类资源源的最大需求求数Maxnm: enddl; couutn请严格按按照(nm)的距距阵输入:enddl; for (i=0; in; i+) ffor (jj=0; jjMaxx

17、ijj; couttnn请输入各进进程当前已分分配的资源数数量Alloocatioonnmm: eendl; couttnn请严格按照照(nnm)的距距阵输入:enddl; for (i=0; in; i+) FFinishhi=00; ffor (jj=0; jjAlllocatiionij; Neeedij = Maxiij-Alloccationnijj; r(Fiinish,Work,Availlable,Need,Alloccationn,Max,n,m); for(i=0;iin;i+) FFinishhi=00; r(Fiinish,Work,Availlable,Need,Al

18、loccationn,Max,n,m);for(i=00;in;i+) FFinishhi=00; r(Fiinish,Work,Availlable,Need,Alloccationn,Max,n,m);for(i=00;in;i+) FFinishhi=00; r(Fiinish,Work,Availlable,Need,Alloccationn,Max,n,m);for(i=00;in;i+) FFinishhi=00; 实验结果实验体会 银行家算法法在计算机操操作系统中是是一个非常重重要的算法,这这次我编制模模拟银行家算算法的程序,来验证了程序的正确性。银行家算法可以避免程序死锁,使各进程处于安全状态。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 其他资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁