《操作系统课程设计(银行家算法)》由会员分享,可在线阅读,更多相关《操作系统课程设计(银行家算法)(22页珍藏版)》请在金锄头文库上搜索。
1、操 作 系 统课 程 设 计 说 明 书题目: 银行家算法模拟 院 系: 计算机科学与工程学院 专业班级: 计算机 10-5 班 学 号: 2010303157 学生姓名: 张 绪 磊 指导教师: 刘 惠 临 2013 年 1 月 9 日安徽理工大学课程设计(论文)任务书计算机科学与工程学院 计算机科学与技术系 学 号 2010303157 学生姓名 张绪磊 专业(班级) 计算机 10-5 班设计题目 银行家算法模拟设计技术参数系统平台:Windows 7开发工具:vc+ 6.0 开发语言:c/c+语言设计要求1.系统基本实现安全性、添加资源、修改资源、配置资源等算法。2.要求系统能实现人机交
2、互,界面友好。3.当输入一组资源和作业的数量时,可以根据其需求量判断系统安全性。工作量1.设计报告要求不少于 4000 字。2.源程序要求不少于 300 行工作计划2012.11.212012.11.28 算法的分析及系统的功能分析2012.11.292012.12.03 系统的总体设计2012.12.042012.12.10 系统功能的详细设计2012.12.112012.12.24 系统的编码设计和界面设计2012.12.252013.01.01 系统的调试及测试2013.01.022013.01.09 撰写课程设计报告参考资料1汤小丹,梁红兵,哲凤屏,汤子瀛.计算机操作系统.第三版.西安
3、:西安电子科技大学出版社,20072 谭浩强. C 程序设计.第三版.北京:清华大学出版社,20053张海藩.软件工程导论.第五版.北京:清华大学出版社,20084 冯博琴.Visual C+与面向对象程序设计教程.第三版. 高等教育出版社; 2010指导教师签字 系主任签字2013 年 1 月 9 日安徽理工大学课程设计(论文)成绩评定表学生姓名: 张 绪 磊 学号: 2010303157 专业班级: 计算机 10-5 班 设计题目: 银行家算法模拟 指导教师评语:成绩: 指导教师: 年 月 日I摘 要银行家算法是一个用来预防系统进入死锁状态的算法,用它可以判断系统的安全性,如果系统当前处于
4、安全状态,则可以为申请资源的进程分配资源;如果不是安全状态,则不能为申请资源的进程分配资源。 银行家算法执行过程中,首先判断申请资源的进程所申请的资源数目是否合法,若是合法的,则可以为其进行试分配,再利用安全性算法求出安全序列,如果存在安全序列,则说明可以给申请资源的进程分配资源,分配成功,继续为其它进程服务。如果找不到安全序列,则说明为该进程分配资源后系统会进入不安全状态,所以不能为该进程分配资源,使该进程进入阻塞状态。若申请资源的进程申请的资源数目不合法,则不需要进行试分配,直接使其进入阻塞状态,处理其他申请资源的进程。 关键词:可用资源,最大需求矩阵,分配矩阵,需求矩阵,安全性算法,安全
5、序列II目 录1.绪论 .11.1 系统分工 .11.2 课 题背景 .11.3 死锁 .11.4 安全性 .21.5 算法设计思想 .22.需求分析 .32.1 基本 要求 .32.2 模块划分 .33.总体设计 .43.1 算法设计 .43.2 模块设计 .54.详细设计 .64.1 程序 流程图 .64.2 主要函 数的核心代码 .65.程序测试 .125.1 界面设计 .125.2 数据测试 .135.3 操作提示 .146.总结 .16参考文 献 .1711.绪论1.1 系统分工银行家算法模拟 设计内容及其说明本人设计内容主要和组员张鑫设计 MFC 界面和代码的调试,涉及主要功能代码
6、,包括其他组员设计的主要函数代码嵌入到 MFC 中,主要编写了银行家算法。对 MFC 程序遇到的错误修改、功能缺失及算法不健壮等问题作了修改。之后和其他组员一起将其他的功能嵌入到程序里,主要是添加资源,删除资源,修改资源,分配资源和增加作业功能,最终完成了了一个整体的银行家算法。其他组员设计内容添加资源,修改资源,删除资源,分配资源,增加作业。1.2 课题背景在多道程序系统中,虽可以借助多个进程的并发执行来改善系统的资源利用率,提高系统吞吐量,但可能发生一种危险死锁,即多个进程在运行过程中因争夺资源而造成的一种僵局,若无外力作用,将无法再向前推进。如此,寻求一种避免死锁的方法便显得有为重要。死
7、锁的产生一般的原因有两点:竞争资源和进程间推进顺序非法。因此,我们只需在当前的有限资源下,找到一组合法的执行顺序,便能很好的避免死锁,我们称它为安全序列。而银行家算法起源于银行系统的发放贷款,和计算机操作系统的资源分配完全符合,因此可以借鉴该算法的思想,设计出一种有效的算法程序,解决该问题。1.3 死锁所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需
8、的资源而无法继续运行,这就产生了一种特殊现象:死锁。在计算机系统中,涉及软件,硬件资源都可能发生死锁。例如:系统中只有一台CD-ROM 驱动器和一台打印机,某一个进程占有了 CD-ROM 驱动器,又申请打印机;另一进程占有了打印机,还申请 CD-ROM。结果,两个进程都被阻塞,永远也不能自行解除。21.4 安全性全序列的的实际意义在于:系统每次进行资源分配后,如果对于系统中新的资源状况,存在一个安全序列,则至少存在一条确保系统不会进入死锁的路径。按照该序列,银行家可以实施一个有效的分配过程使得所有客户得到满足,行家算法的核心在于安全序列的产生。安全序列正是一种安全的进程推进顺序。1.5 算法设
9、计思想我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。32.需求分析2.1 基本要求(1)从
10、键盘输入当前系统的资源信息,包括当前可用资源,每个进程对各类资源的最大需求量,每个进程当前已分配的各个资源量和每个进程尚需要的各个资源量,输出结果显示在界面上。 (2)输入进程请求,按照设计好的安全性算法进行检查,得到结果并输出整个执行过程的相关信息和最终结果(主要包括资源分配表和安全序列) 。 (3)要求要有各种异常的处理,程序的可控制性和可连续性执行。包括对进程的存在有无检查,请求向量的不合法检查,试分配失败后的数据恢复和重新接受进程请求等。2.2 模块划分(1)分配模块输入一组资源及作业的数量,分配资源及作业的各项属性。再配置作业的资源最大需求量及已申请的资源属性。以及资源的添加、修改、
11、删除和分配功能,此外,还有对作业的添加。(2)判定模块通过银行家算法对已经分配完毕的资源及作业的属性进行判断,判断申请是否大于需求,若大于则出错,则提示出错信息;判断申请是否大于当前资源,若大于则出错,则提示出错信息。(3)检查模块根据银行家算法进行资源分配后,检查资源分配后的系统状态是否处于安全状态之中,以避免死锁的发生。当资源分配可行时,则分配;若安全性算法不能通过,则不予分配,以保证系统的安全和死锁的不发生。43.总体设计3.1 算法设计(1)银行家算法的实现,需要用到以下主要数据:int Max100100=0;/各进程所需各类资源的最大需求int Avaliable100=0;/系统可用资源CString name100=;/资源的名称int Allocation100100=0;/系统已分配资源int Need100100=0;/还需要资源int Request100=0;/请求资源向量int