银行家安全算法实验报告

银行家安全算法实验报告

ID:41482479

大小:73.61 KB

页数:5页

时间:2019-08-25

银行家安全算法实验报告_第1页
银行家安全算法实验报告_第2页
银行家安全算法实验报告_第3页
银行家安全算法实验报告_第4页
银行家安全算法实验报告_第5页
资源描述:

《银行家安全算法实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、©南昌大学卖殓掖告・・・(2)徭程變观辗行家姿全算倣学生姓名:学号:专业班级:实验类型:口验证口综合■设计口创新实验日期:实验成绩:一、实验目的通过实验加强对银行家安全算法的理解和掌握。二、实验内容熟悉避免死锁发生的方法,死锁与安全序列的关系,编程实现银行家算法,要求输出进程的安全序列。三、实验要求1、需写出设计说明;2、设计实现代码及说明3、运行结果;四、主要实验步骤设计说明:假定系统屮有五个进程PO,Pl,P2,P3,P4,和三类资源A、B、C,在TO时刻的资源分配情况如下图所示,且TO时刻系统安全。进程卩■Max"AAllocation^BV0AVNedBO

2、1Available^ABOABO1Po』1753u1101(k111743「LPh1322卩'1201L4JP2"902J302亠6XAAAA4JP3#11222丿1211121rLd1433"1002卩1431J1流程图:重要数据说明:请求向量:request[3]可利用资源向量:available[3]分配矩阵:allocation[5][3]需求矩阵:need⑸[3]工作向量:work[3]进程完成标志:finish[5]安全序列:safe[5]请求进程号:proc找到满足条件的进程的标志:found系统处于安全的标志:safty系统能满足请求向量的标志:

3、give设计实现代码:#includevoidmain()intrequest[3];intavailable]]二{3,3,2};intallocation[5][3]={{0,l,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};intneed[5]⑶二{{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}};intwork[3J;intfinish[]={0,0,0,0,0};intsafe[5];intproc,found=0,safty=1,ij=0,n,x,give=1;printf(H

4、资源情况cillocationneed1availableH);/*显示TO吋刻资源分配情况表*/printf("进程ABcABCABCH);printfCP0010743332“);printf(HPl200122“);printf(nP2302600H);printfCP321101l“);printfC'P400243l“);printf(u请输入要请求的进程号门;scanf(n%dH,&proc);printf(u请输入对资源A,B,C的请求量:“);scanf("%d,%d,%d",&request[0],&reque

5、st[l],&request[2]);for(i=0;i<3;i++){if(requestfi]-need[proc]fi]>0)/*判断请求向量是否超过进程所需的资源数*/{printf("所需资源数超过最大需求,错误!”);give二0;break;}if(request[i]-available[i]>0)/*判断请求向量是否超过系统可利用资源数*/{printf("尚无足够资源,请等待!”);give=0;break;1}if(give==l)/*若上诉两种情况都不超过*/{for(i=0;i<3;i++)/*系统试探着把资源分配给请求的进程*/

6、{available[i]=available[ij-requestli];allocation[proc][i]=allocation[proc][i]+request[i];need[proc][il=needfprocl[i]-request[il;work[i]=available[i];}while(l)/*执行安全性算法*/found=0;for(n=0;n<5;n++)/*没找到,跳出循环,结束查找可}for(n=O;n<5;n++)/*判断是否所有进程的finish[n]==l都满足*/if(finish[n]==O)/*有不满足的进程*//*在五

7、个进程中从P0到P4寻找满足finish[n]==Ol=Lneed[i]<=work[i]的进程勺if(finish[n]==O&&need[n][0]-work[0]<=0&&need[nl[1l-work[11<=0&&needfn][21-work[2]<=0)严若找到,释放出分配给它的资源*/found=l;safe[j]=n;j=j+l;finish[n]=l;for(x=0;x<3;x++){work[x]=work[x]+allocation[n][x];}}}if(found==0)break;printf(n系统进入不安全状态,不分配资源!“

8、);/*显

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。