银行家算法—课程设计

银行家算法—课程设计

ID:10695122

大小:199.96 KB

页数:16页

时间:2018-07-07

银行家算法—课程设计_第1页
银行家算法—课程设计_第2页
银行家算法—课程设计_第3页
银行家算法—课程设计_第4页
银行家算法—课程设计_第5页
资源描述:

《银行家算法—课程设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、操作系统课程设计进程管理死锁避免算法设计姓名:学号:系别:计算机科学与工程专业:计算机科学与技术年级:指导教师:2011年5月16日一、课程设计项目介绍(含项目介绍及设计目的)项目介绍:1、前言介绍:在多道程序系统中,虽可借助于多个进程的并发执行,来改善系统的资源利用提高吞吐量,但可能发生一种危险——死锁。当进程处于这种僵持状态时,若无外力作用,他们都无法再向前推进。在操作系统的资源分配也有类似的问题,如果资源分配不得当就会发生进程循环等待资源,就会出现死锁的现象。而最有代表性的避免死锁的算法就是银行家算法。银行家算法是避免死锁

2、的一种重要方法,本次课程设计用C语言编写和调试一个简单的银行家算法程序,用银行家算法检查是否允许分配资源给进程,避免死锁。2、设计内容:内容:实现教材3.6.3节中所描述的银行家避免死锁算法。要求:可自定义进程数目、资源类型和每种类型资源的数目;  可输入每个进程对每种资源的最大需求、已经获得的数量;  当某进程发起某种资源请求时,计算系统状态是否安全。设计目的:1、加深我们对了解有关资源申请、避免死锁等概念,提高了我们分析、解决问题的能力。2、通过课程设计深入理解避免死锁的原理,并加深我们对银行家算法理解。二、总体设计(含系统

3、的总体结构、原理框图或各模块介绍等)总体结构:1、初始化进程数以及资源数;2、银行家算法;3、安全性算法。模块介绍:1、主函数main()(1)、确定初始进程数(2)、确定初始资源种类数以及可用资源的数目(3)、确定初始各进程所需最大的资源数以及目前已分配的资源数目(4)、调用其他模块2、银行家算法Bank()(1)、如果Request<=NEED,则转向(2);否则,出错(2)、如果Request<=ALLOCATION,则转向(3),否则等待(3)、系统尝试分配资源给进程(4)、系统执行安全性算法3、安全性算法chkerr(

4、)(1)、设置两个向量1)工作向量:WORK=AVAILABLE(表示系统可提供给进程继续运行所需要的各类资源数目)2)FINISH:表示系统是否有足够资源分配给进程(TRUE表示有;FALSE表示没有),初始化为FALSE。.(2)、若FINISH[i]=FALSE&&NEED<=WORK,则执行3;否则执行4(3)、进程P获得第i类资源,则顺利执行直至完成!并释放资源:WORK=WORK+ALLOCATION[i][j];FINISH[i]=TRUE;转2(4)、若所有进程的FINISH[i]=TRUE,则表示系统安全;否则

5、,不安全!三、详细设计(含主要的数据结构、程序流程图、关键代码段及注释等)数据结构:1.可利用资源向量AVAILABLE2.分配矩阵ALLOCATION3.需求矩阵NEED程序流程图:开始初始化输入进程发出资源请求N试探分配系统是否安全Y分配资源结束关键代码段:#include#defineM50//总进程数#defineN30//总资源数#defineFALSE0#defineTRUE1intE,F;//系统可用资源数intAVAILABLE[N];//可用资源的数组intALLOCATION[M][N];/

6、/已分配到的资源intNEED[M][N];//需求矩阵intRequest[N];//进程请求的资源数main()//主函数{inti=0,j=0;intflag=1;//合法的资源申请voidshowdata();//显示资源分配情况函数voidchangdata(int);//更改资源分配函数voidrstordata(int);//还原预分配资源函数voidbank();//银行家算法函数intchkerr(int);//安全性算法函数printf("———银行家算法———");printf("***输入进程

7、总数E:");scanf("%d",&E);//输入进程总数printf("***输入资源种类总数F:");scanf("%d",&F);//输入资源种类数printf("***输入已分配资源数:");for(i=0;i

8、数}printf("***输入可利用的资源数");for(i=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。