欢迎来到天天文库
浏览记录
ID:6251608
大小:269.00 KB
页数:15页
时间:2018-01-07
《银行家算法-课程设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、课程设计报告操作系统原理———银行家算法专业软件工程学生姓名陈鹏班级3班学号0810321306指导教师万方完成日期2011.06.24银行家算法一、银行家算法原理银行家算法是一种最有代表性的避免死锁的算法。要解释银行家算法,必须先解释操作系统安全状态和不安全状态。安全状态:如果存在一个由系统中所有进程构成的安全序列P1,…,Pn,则系统处于安全状态。安全状态一定是没有死锁发生。不安全状态:不存在一个安全序列。不安全状态不一定导致死锁。那么什么是安全序列呢?安全序列:一个进程序列{P1,…,Pn}是安全的,如果对于每一个进程Pi(1≤i≤n),它以后
2、尚需要的资源量不超过系统当前剩余资源量与所有进程Pj(j
3、大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可以避免发生死锁。银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。它是最具有代表性的避免死锁的算法。二、算法的数据结构(1)可利用资源向量Available是个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目。如果Available[j]=K,则表示系统中现有Rj类资源K个。(2)最大需求矩阵Max这是
4、一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K。(3)分配矩阵Allocation这也是一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation[i,j]=K,则表示进程i当前已分得Rj类资源的数目为K。(4)需求矩阵Need这也是一个n×m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成其任务。其中Need[i,j]=Max[i,j]-Allocat
5、ion[i,j]三、程序流程图开始输入资源数m及各类资源总数,初始化输入进程数ni<=n输入进程i的最大需求向量Max<=资源总数提示错误i加1初始化needNeed矩阵为0所有进程运行结束任选一个进程作为当前进程Need向量为0该进程已运行输入该进程的资源请求量调用银行家算法,及安全性算法,完成分配并给出提示YNNYYYNN四、程序代码#includeusingnamespacestd;#include#include#defineFalse0#defineTrue1intMax[100][
6、100]={0};//各进程所需各类资源的最大需求intAvaliable[100]={0};//系统可用资源charname[100]={0};//资源的名称intAllocation[100][100]={0};//系统已分配资源intNeed[100][100]={0};//还需要资源intRequest[100]={0};//请求资源向量inttemp[100]={0};//存放安全序列intWork[100]={0};//存放系统可提供资源intM=100;//作业的最大数为100 intN=100;//资源的最大数为100 voidsho
7、wdata()//显示资源矩阵{inti,j;cout<<"系统目前可用的资源[Avaliable]:"<8、for(i=0;i
8、for(i=0;i
此文档下载收益归作者所有