欢迎来到天天文库
浏览记录
ID:53963210
大小:49.50 KB
页数:10页
时间:2020-04-11
《银行家算法课程设计报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、下载可编辑《计算机操作系统》课程设计报告书选题:银行家算法模拟姓名:包玉霞学号:1班级:软件1001指导老师:徐向英2012年6月目录一.课程设计目的二.课题内容三.设计思路四.源代码五.运行与测试六.心得体会1.设计目的.专业.整理.下载可编辑计算机系统中有很多资源,在多道程序设计环境中,若干程序往往要共享这些资源,而一个进程所需的资源不止一个,这样,系统就会容易发生死锁现象。然而系统产生死锁不仅浪费大量的系统资源,甚至导致整个系统的崩溃,带来灾难性的后果。而银行家算法是最具有代表性的避免死锁的一种重要方法,如果在并发执行
2、的进程中能够寻找一个安全序列,则系统按照此序列分配资源,系统就不会产生死锁现象。2.课题内容1.复习银行家算法,设计一个具有若干(不少于3种)资源和若干(不少于5个)进程的系统。2.定义系统的初始状态,即进程获得的资源数,还需要的资源数以及系统可用的资源数。3.以用户输入的方式提出资源请求,并用银行家算法避免可能发生的死锁,若系统安全,允许用户继续申请资源。4.设计的系统要求结构清晰,与用户的交互界面友好,能动态地实现资源的申请和分配。3.设计思路银行家算法可分为几个主要的功能模块,其描述如下:1.初始化由用户输入数据,分别
3、对运行的进程数、总的资源种类数、总资源数、各进程所需要的最大资源数量(Max),已分配的资源数量赋值。初始化算法流程图:2.安全性检查算法(1)设置两个工作向量Work=AVAILABLE;FINISH=false;(2)从进程集合中找到一个满足下述条件的进程,FINISH==false;NEED<=Work;如找到,执行(3);否则,执行(4)(3)设进程获得资源,可顺利执行,直至完成,从而释放资源。Work+=ALLOCATION;.专业.整理.下载可编辑Finish=true;(4).如所有的进程Finish=true
4、,则表示安全;否则系统不安全。安全性算法流程图:3.银行家算法在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可以避免发生死锁。银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。它是最具有代表性的避免死锁的算法。设进程j提出请求REQUEST[i],则银行家算法按如下规则进行判断。(1).如果REQUEST[j][i]<=NEED[j][i],则转(2);否则,出错。(2).如果REQUEST[j]
5、[i]<=AVAILABLE[j][i],则转(3);否则,出错。(3).系统试探分配资源,修改相关数据:AVAILABLE[i]-=REQUEST[j][i];ALLOCATION[j][i]+=REQUEST[j][i];NEED[j][i]-=REQUEST[j][i];银行家算法流程图:4.源代码#include#include#include#defineFALSE0#defineTRUE1#defineW10#defineR20intM;//总进程数int
6、N;//资源种类.专业.整理.下载可编辑intALL_RESOURCE[W];//各种资源的数目总和intMAX[W][R];//M个进程对N类资源最大资源需求量intAVAILABLE[R];//系统可用资源数intALLOCATION[W][R];//M个进程已经得到N类资源的资源量intNEED[W][R];//M个进程还需要N类资源的资源量intRequest[R];//请求资源个数voidshowdata()//函数showdata,输出资源分配情况{inti,j;printf("各种资源的总数量(all)
7、:");for(j=0;j8、intf("");for(i=0;i
8、intf("");for(i=0;i
此文档下载收益归作者所有