银行家算法C语言代码

上传人:汽*** 文档编号:506178593 上传时间:2023-07-25 格式:DOC 页数:10 大小:179.50KB
返回 下载 相关 举报
银行家算法C语言代码_第1页
第1页 / 共10页
银行家算法C语言代码_第2页
第2页 / 共10页
银行家算法C语言代码_第3页
第3页 / 共10页
银行家算法C语言代码_第4页
第4页 / 共10页
银行家算法C语言代码_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《银行家算法C语言代码》由会员分享,可在线阅读,更多相关《银行家算法C语言代码(10页珍藏版)》请在金锄头文库上搜索。

1、实验名称:银行家算法姓 名:杨秀龙学 号:1107300432专业班级=创新实验班111 指导老师:霍林实验题目银行家算法实验目的更深层的了解银行家算法是如何避免死锁的设计思想银行家算法是根据进程的请求,假设在己分配给该进程请求的资源后,进行安全 性算法,如果都能满足其他进程的请求,则满足该进程的请求,否则挂起该进程 的请求。假设在一个系统中,知道相应的进程的状态(最大需求、己占用的资源 量、还需要的资源量和可利用的资源数),某个进程发出请求,在请求满足两大 请求(小于还需要的资源并小于可利用资源数)时,分配给该进程相应的资源, 再进行安全检测,在确认安全的情况下,才把资源真正分配给该进程,否

2、则终止 请求!主要数据结构根据算法的相应需求,需要定义intmaxMMJ;mt allocationMM;mt needMM;mt availableM;mt woikM;等数组流程图输入资源数运行结果73925202332223输入已分配矩P$Allocat ion:100100232000212输入资源的系统初始值:10 5 7处壬安全状态安全序列号汽3 allocat ion1001a a o进程0123Max7 53 29 02 23222023200210 2need420171603201available3 3 2图(1)分配进程的相应状态:1 0 21 3 4 0 2alloc

3、at2 2 3 0 2 3求进的态ax9 2 4HM7 蒙进全 继请戛 否入入于程2 3 4isa0allocat743020600011431:0 2 013 4 02ion needion need0 103 0 23 0 22 110 0 27 4 3auailable2 3 0available0 100 0 03 0 22 110 0 20 0 06 0 0 0 114 3 1图(2)请求和请求完全部资源后释放资源KIM 來进全 请这女 入入于程 ma?|?佞 求进的态12343 2 29 0 22 2 24 3 301 074300 000030 260000 000000 243

4、1:0资源扌4 3I序歹1k=012 34allocat ionneedallocation0 0 0need0 0 033available7 4 3available7 5 30 0 03 0 20 0 00 0 2图(3)继续请求并释放其他进程2卫予资鉗 ?程请余 求进的态. HMII知3 ?禾亍 3求进的态, 4HM 蒙进全 继请逐女 否入入于程443 02 016Auallocationneed0 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 04 3 1auailable10 5 50 0 00 0 00 0 00 0 00 0 0:4 3 10 12

5、3 4 ion need012347 5 33 2 29 0 22 2 24 3 30 0 00 0 00 0 00 0 00 0 0auailable10 5 7图(2)所有进程请求完成后系统资源还原附录原代码如下:# mclude nstdio.hH# define M 50 int allocationMM; mt needNIMJ: int available MJ;int i,j,n, m, anquan,x=0;/*7 5 30 1 07433222001229023026002222 1 10 1 14330024 3 1*/main()void check();3 32iiit

6、 p.q,control;mt reqM .allocation 1 M NI meed 1M MJ.available 1 MJ; pnurff输入进程总数J;scanf(H%d, &n);pnntf(”输入资源种类数量:”); scanf(H%d, &m);pnntf(”输入需求矩阵Max:iT);fbr(i=0;in; i+)for(j=0jm; j+)scanf(H%2d,&maxij);piintf(”输入己分配矩阵 Allocation”);fbr(i=0;in; i+)for(j=0jm; j+)scanf(”d; &allocationij);for (i=0;in; i+)f

7、or(j=0jm; j+)needij=maxi j-allocationiIj; pnntfC输入资源的系统初始值:n”);for (j=OjmJ+)scanf(”d; &availablej); for (j=0jm;j 卄) fbr(i=0;in;i+)availablej=availablej-allocationi|j;check();if (anquan=l)如果已知的状态安全则执行以下代码fbr(control=0 ;control+) p=O,q=O;pnntf(”输入请求的进程号:”);scanff%d”, &i);pnntf(”输入该进程的请求资源数组:“);foi(j=O

8、jm;j-H-)scanfl%d.&reqj);foi(j=Ojneedij)PT;f(P)pnntf(”请求资源大于该进程还需要的资源!n”);elsefor(j=Ojavailable |j )/判断请求是否大于可用资源q=i;】f(q)pnntf(”可用资源不能满足请求!n”);elsefor(j=0 jm; j+)/满足两人条件available 1 j=available j ;保持资源的当前allocation 1 i j =allocationi j ;needlij=needij;availablej=availablej-reqlj; 尝试把资源分配给进程allocation

9、ij=allocationij+reqj;needi j=need ij-reqj;if(needij=O)x=x+l;当进程满足时释放资源if(x=m)血(j=O;jm;j+)available j =available j +allocationi j ; allocationij=0;available! j=available|j;X;else x=0;check();if(anquaii=O)for (j=0 jm; j 卄)available j =available lj;还原分配前的状态allocationij=allocationl ij; needij=needlij;pn

10、ntfC执行该进程不安全!返回继续操作。E);pnntfC是否继续请求?n”);void check() 安全性算法 iiit k,仁 no=0;int workM,aM;char fiiushfM:aiiquan=l;fbr(i=0;in; i+)fiiushi=,F,;for(j=0jm; j+)workj =available j ;k=n;dofor (i=0;in; i+)if(fiiiishi=F) f=l;for (j=0 Jwoik|j)f=0;if(f=l)找到还没完成的且需求数小于可提供进程继续运行的 fimshi=,T,;ano卄=i;记录安全序列号for (j=0;j0

11、);Ql;for (i=O;in; i+)判断有没有进程没完成if (finishi=F)break;if(f=O)printfC1不安全状态! nH);anquan=O;elsepnntf(处于安全状态.”); pnmf(”安全序列号:”); for (i=O;in;i+) printf(H%d ”,ai);pnntf(”进程”);pnntf(”M);prmtf(M Max H);pnntf(”M);pdn 理 allocation”); pnntf(”H);prmtf(nneedH); pnntf(”H);pimtf(HavailableH); prmtf(HnH);for (i=0;in; i+)”);for(j=0 Jm; j+) pimtf(H%2dH4iiaxij);”);

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

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号