操作系统课程设计--银行家算法

上传人:ji****72 文档编号:27375862 上传时间:2018-01-09 格式:DOC 页数:18 大小:320KB
返回 下载 相关 举报
操作系统课程设计--银行家算法_第1页
第1页 / 共18页
操作系统课程设计--银行家算法_第2页
第2页 / 共18页
操作系统课程设计--银行家算法_第3页
第3页 / 共18页
操作系统课程设计--银行家算法_第4页
第4页 / 共18页
操作系统课程设计--银行家算法_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《操作系统课程设计--银行家算法》由会员分享,可在线阅读,更多相关《操作系统课程设计--银行家算法(18页珍藏版)》请在金锄头文库上搜索。

1、 课程设计说明书 NO.1沈 阳 大 学银行家算法1. 课程设计的目的了解多道程序系统中,多个进程并发执行的资源分配,及死锁的产生原因、必要条件和处理死锁的基本方法,掌握预防死锁的方法,系统安全状态的基本概念,了解银行家算法,及资源在进程并发执行中的资源分配策略,并且理解死锁避免在当前计算机系统不常使用的原因。根据设计题目的要求,充分地分析和理解题目,叙述系统的要求,明确程序要求实现的功能以及限制条件。明白自己需要用代码实现的功能,清楚编写每部分代码的目的,做到有的放矢,有条理不遗漏的用代码实现银行家算法。2.设计方案论证2.1 题目描述银行家算法是一种最有代表性的避免死锁的算法。在多道程序系

2、统中,多个进程的并发执行来改善系统的资源利用率,提高系统的吞吐量,但可能发生一种危险死锁。所谓死锁(Deadlock),是指多个进程在运行过程中因争夺资源而造成的一种僵局(DeadlyEmbrace) ,当进程处于这种状态时,若无外力作用,他们都无法在向前推进。要预防死锁,有摒弃“请求和保持”条件,摒弃“不剥夺”条件,摒弃“环路等待”条件等方法。但是,在预防死锁的几种方法之中,都施加了较强的限制条件;而在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。在该方法中把系统状态分为安全状态和不安全状态,便可避免死锁的发生。要解释银行家算法,必须先解释操作系统安全状态和不安全状态

3、。安全状态是指系统能按照某种进程顺序P1,P2,,Pn(称P1,P2,,Pn 序列为安全序列) ,来为每个进程 Pi 分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可以顺利完成。安全状态一定没有死锁发生。如果系统无法找到这样一个安全序列,则称系统处于不安全状态。安全序列:一个进程序列P1,Pn是安全的,如果对于每一个进程Pi(1in) ,它以后尚需要的资源量不超过系统当前剩余资源量与所有进程 Pj (j NEEDcusneedi REQUESTcusneediAVAILABLEi试分配changdata()Safe()Put()输出内容 课程设计说明书 NO.6沈 阳 大 学(

4、2)安全性算法,如图 2 所示。YNYNYYYN初始化 work数组,使 Workj=Availablej; Finishi=falseFinishi=trueNeedijWorkjapply+;appy=NFinishi=trueWorkm+=Allocationimtempk=i;k+l=m输出安全序列Return true不安全 Availablei=Availablei+Requesti;Allocationnumi=Allocationnumi-RequestjNeednumi=Neednumi+Requesti; 课程设计说明书 NO.7沈 阳 大 学图 2 安全性算法流程图2.3

5、.3 调试结果(1)资源分配情况,如图 3 所示。图 3 资源分配情况(2)安全判断,如图 4 所示。Maxnumi=Allocationnumi; Allocationnumi=0; Availablei = Availablei + Allocationnumi; 课程设计说明书 NO.8沈 阳 大 学图 4 安全判断 (3)为 1 分配资源,如图 5 所示。图 5 为 1 分配资源 (4)为 4 分配资源,如图 6 所示。 课程设计说明书 NO.9沈 阳 大 学图 6 为 4 分配资源(5)为 0 分配资源,如图 7 所示。图 7 为 0 分配资源3.设计体会 课程设计说明书 NO.10

6、沈 阳 大 学通过本次课程设计,我收获很多,首先我对十大算法之一的银行家算法有了清楚的认识,认真分析了进程产生死锁的原因,了解为什么要进行死锁的避免,掌握银行家算法的数据结构,了解了算法的执行过程,加深了对银行家算法的理解。其次,我对编程有了个清楚的认识,编程就是将先现实中的规律模拟成电脑能运行的程序,方便我们的工作和学习生活。最后,我也清楚认识到理论联系实际重要性,动手操作能力和编程逻辑思维能力的提高的重要性,对自己所编写的程序要学会调试,不断改进,向更加全面的方向考虑,同时也要考虑程序的可行性和健壮性。总而言之,我在编写程序方面有了更加深入的认识。不同的算法可以实现相同的功能,这是我从本次

7、实验中深深体会到的,因而在今后的学习中遇到问题我会尝试着用的不同的方法来解决,有时候换个角度可以很方便的解决问题课程设计是我们对专业课程知识综合应用的实践训练,只有认真的进行课程设计,学会脚踏实地认真思考学习,课程设计是培养我们综合运用所学知识,发现、提出、分析和解决实际问题、锻炼实践能力的重要环节,是对我们实际能力的考察过程。4.参考文献1 汤小丹,梁红兵,哲凤屏,汤子瀛.计算机操作系统.M 西安:西安电子科技大学出版社,2007. 150-2202 严蔚敏,吴伟民.数据结构. M 北京:清华大学出版社,2006. 14-993 赵莉,杨国梁,孙喁喁,徐飞.Java 程序设计教程 . M 西

8、安:西安科技大学出版社,2009.25-994 刘璟等.高级语言 C+程序设计.M西安电子科技大学出版社,2009.66-102 课程设计说明书 NO.11沈 阳 大 学附录#include#include#define False 0#define True 1char name50=0;/资源名称int Max5050=0;/进程所需各类资源的最大需求int Allocation5050=0;/系统已分配资源int Need5050=0;/进程需求资源int Available50=0;/系统可用资源向量int Request50=0;/进程请求资源向量int Work50=0;/存放系统

9、可提供进程继续运行所需各类资源数目int temp50=0;/存放安全序列 课程设计说明书 NO.12沈 阳 大 学int b50=0;/系统各类资源总数int M=50;/进程的最大数目为 50int N=50;/资源的最大数目为 50void display()int i,j,number,m,n;char ming;int a50=0;coutn;N=n;for(i=0;imingnumber;namei=ming;bi=number;coutm;M=m;coutMaxij;coutAllocationij;Needij=Maxij-Allocationij;if(Needij; 课程设

10、计说明书 NO.17沈 阳 大 学couti;/输入须申请的资源号 课程设计说明书 NO.18沈 阳 大 学coutRequestj;/输入需要申请的资源for (j=0;jNeedij)/判断申请是否大于需求,若大于则出错 coutAvailablej)/判断申请是否大于当前资源,若大于则出错cout进程i申请的资源大于系统现在可利用的资源 ;cout 分配出错,不予分配!endl;ch=n;break;if(ch=y) changdata(i);/根据进程需求量变换资源print();/根据进程需求量显示变换后的资源 课程设计说明书 NO.19沈 阳 大 学safe(i,M,N);/根据进程需求量进行银行家算法判断void main()int i;display();print();safe(0,M,N);for(i=0;iM;i+) bank(M,N); print();

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号