欢迎来到天天文库
浏览记录
ID:47073759
大小:207.50 KB
页数:9页
时间:2019-07-16
《银行家算法地模拟实现实验报告材料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用文档银行家算法的模拟实现一、实验题目:模拟实现银行家算法的处理过程二、实验目的:银行家算法是避免死锁的代表性算法。本实习旨在加深了解有关资源申请、避免死锁、状态安全性等概念,并体会和运用避免死锁的具体实施方法。然后依照本实习,自行设计模拟程序。三、实验原理:1.我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源。当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大
2、需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。2.安全状态:如果存在一个由系统中所有进程构成的安全序列P1,…,Pn,则系统处于安全状态。安全状态一定是没有死锁发生。不安全状态:不存在一个安全序列。不安全状态一定导致死锁。安全序列:一个进程序列{P1,…,Pn}是安全
3、的,如果对于每一个进程Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj(j
4、把资源分配给p[i],并修改下列数据结构中的值:available[j]=available[j]-request[j]allocation[i][j]=allocation[i][j]+request[j] need[i][j]=need[i][j]-request[j]4)系统进行安全性算法,检查此次分配后,系统是否还处于安全状态,若安全,把资源分配给进程p[i];否则,恢复原来的资源分配状态,让进程p[i]等待。4.安全性算法:intwork[RESOURCE_NUMBER];boolfinish[PROCES
5、S_NUMBER];1)Work=Available;文案大全实用文档Finish=false;2)寻找满足条件的i:A、Finish[i]=false;B、Need[i]≤Work;如果不存在,则转4)3)Work:=Work+Allocation[i];Finish[i]:=true;转2)4)若对所有i,Finish[i]=true,则系统处于安全状态,否则处于不安全状态 一、数据结构:数组二、程序代码:#include#include#include#
6、includeusingnamespacestd;#defineN3//进程数#defineM3//资源数intAvailable[M];//可用的资源数intNeed[N][M]={0};//还需要的资源数intMax[N][M];//最大需求量intAllocation[N][M]={0};//当前分配到的资源数intRequest[N][M]={0};//请求的资源数intn;time_tt;intisFinish[N]={0};//判断进程是否已经请求资源结束inttest1=0;voidRe
7、quester();//进程随机请求资源数目voidHandle();//处理该请求boolCheck();//安全性算法检查voidshow();//打印出当前的进程资源状态intFinish(int);//进程是否已经完成,若完成返回1,否则为0voidmain(){inti;intj;cout<<"请输入各个资源的可用数目:";文案大全实用文档for(i=0;i>Available[i];cout<<"请依次输入各个进程对各个资源的最大需求数目:"<8、+)for(j=0;j>Max[i][j];Need[i][j]=Max[i][j]-Allocation[i][j];}cout<<"------------------------原始状态------------------------"<
8、+)for(j=0;j>Max[i][j];Need[i][j]=Max[i][j]-Allocation[i][j];}cout<<"------------------------原始状态------------------------"<
此文档下载收益归作者所有