欢迎来到天天文库
浏览记录
ID:49546270
大小:440.00 KB
页数:8页
时间:2020-03-02
《操作系统银行家算法.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、..[操作系统]银行家算法操作系统实验报告实验目标1.理解银行家算法。2.掌握进程安全性检查的方法及资源分配的方法。3.加深了解有关资源申请、避免死锁等概念。4.体会和了解死锁和避免死锁的具体实施方法。实验要求编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用银行家算法,有效的防止和避免死锁的发生。设计思路1.银行家算法在避免死锁的方法中,如果施加的限制条件较弱,有可能获得令人满意的系统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可以避免发生死锁。基本思想为:在分配资源之前,判断系统是否是安全的;若安全,才分配。它是最具代表
2、性的死锁算法,具体算法如下表示:假设进程P提出请求Request[i],则银行家算法按如下步骤进行判断:1)如果Request[i]<=Need[i],则转向2);否则出错。2)如果Request[i]<=Available[i],则转向3);否则出错。3)系统试探分配相关资源,修改相关数据:Available[i]=Available[i]-Request[i];Allocation[i]=Allocation[i]+Request[i];Need[i]=Need[i]-Request[i];4)系统执行安全性检查,如安全,则分配成立;否则试探性分配资源作废,系统恢复原状,进程进入等待状
3、态。根据以上银行家算法步骤,可得出如下图所示流程图:优质范文..2.安全性检查算法安全性检查算法主要是根据银行家算法进行资源分配后,检查资源分配后的系统状态是否处于安全状态之中。具体算法如下所示:1)设置两个工作向量Work=Available,Finish=false;2)从进程集合中找到一个满足下述条件的进程;Finish=false;Need<=work;如果能够找到该进程,则执行3),否则,执行4);3)假设上述找到的进程获得资源,可顺利执行,直至完成,从而释放资源。Work=Work+Allocation;Finish=true;Goto2);优质范文..1)如果所有进程的Fin
4、ish=true,则表示该系统安全,否则系统不安全,请求被拒。2)根据以上安全检查算法步骤,可得出如下图所示流程图:主要数据结构#include////////////////////////////////////////////////////////////////////////////全局变量定义intAvailable[100];//可利用资源数组intMax[50][100];//最大需求矩阵intAllocation[50][100];//分配矩阵intNeed[50][100];//需求矩阵intRequest[50][100];//M个进程还需要
5、N类资源的资源量intFinish[50];intp[50];intm,n;//M个进程,N类资源主要代码结构/////////////////////////////////////////////////////////////////////////优质范文..//安全性算法intSafe(){inti,j,l=0;intWork[100];//可利用资源数组for(i=0;i
6、r(j=0;jWork[j])break;}if(j==n){Finish[i]=1;for(intk=0;k";}cout<<'';return1;}}优质范文..}///////////////////////////////
7、////////////////////////////////////////////////////银行家算法intmain(){inti,j,mi;cout<<"输入进程的数目:";cin>>m;cout<<"输入资源的种类:";cin>>n;cout<<"输入每个进程最多所需的各类资源数,按照"<
此文档下载收益归作者所有