资源描述:
《实验验报告—银行家算法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、试验名称银行家算法系别软件工程姓名崔雨哲学号09509343班级0911(软6)试验地点博理楼C317试验日期2010-11-24评分指导老师张冰同组其它成员无一、试验目的银行家算法是避免死锁的代表性算法。本试验旨在加深了解有关资源申请、避免死锁、状态安全性等概念,并体会和运用避免死锁的具体实施方法。然后依照本试验,自行设计模拟程序。二、试验环境Windows环境下虚拟镜像Linux系统进行试验三、试验内容银行家算法的模拟。(1)我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进城向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银
2、行家制定的规则为进城分配资源,当进城首次屮请资源时,要测试该进城对资源的最大需求量,如果系统现存的资源可以满足他的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中,继续申请资源吋,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过,则再测试系统现存的资源是否能满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。(2)安全状态:如果存在一个由系统中所有近程构成的安全序列P1,…,Pn,则系统处于安全状态。安全状态一定是没有死锁发生。①不安全状态:不存在一个安
3、全序列。不安全状态一定导致死锁。②安全序列:一个进程序列{P1,…,Pn}是安全的,如果对于每一个进程Pi(lWiWn)它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj(j
4、试探着把资源分配给p[i],并修改下列数绝结构中的值:available[j]=available[j]-request[j]allocation[i][j]=a.11ocation[i][j]+request[j]need[i][j]=need[i][j]-requesrtj]④系统进行安全性算法,检查此次分配后,系统时候还处于安全状态,若安全,则把资源分配给进程p[iL否则,恢复原来的资源分配状态,让进程p[i]等待。(4)安全性算法:intwork[RESOURCE_NUMBER];boolfinish[PROCESS_NUMBER];①Work=AvaiTa
5、ble;Finish=false;②寻找满足条件的i:•Finish[i]=false;・Need[i]WWork;如果不存在,则转④。③Work:二Work+Allocation[i];Finishti]:二true;转②。④若对所有i,Finish[i]=true,则系统处于安全状态,否则处于不安全状态。(5)按模拟算法设计程序,运行设计的程序,观察得到的结果。四、试验结果〃包含所需要的头文件#include#include#include#definePROCESS_NUMBER5//进程数#defineR
6、ESOURCE_NUMBER3〃资源数#definetrue1#definefalse0typedefintbool;〃系统川用资源向量intAvailable[RESOURCE_NUMBER]={4,5,3};//最大需求向量intMax[PROCESS_NUMBER][RESOURCE_NUMBER]={{8,4,2},{3,3,2},{9,0,2},{2,1,2},{4,3,3}};//资源分配向暈intAllocation[PROCESS_NUMBER][RESOURCE_NUMBER]={{0,1,1},{2,0,0},{2,0,2},{2,1,1},{0
7、,0,2},};〃需求向量intNeed[PROCESS_NUMBER][RESOURCE_NUMBER];〃比较两个一维数组〃判断a>=b是否成立boolcompare(int*a,int*b,intn){inti;for(i=0;i