《操作系统原理课程设计银行家算法_毕业论文.docx》由会员分享,可在线阅读,更多相关《操作系统原理课程设计银行家算法_毕业论文.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、操作系统原理课程设计银行家算法_毕业论文 操作系统课程设计报告 银行家算法 院系:计算机科学技术学院 2022年7月2日 操作系统原理课程设计任务书 一、题目:银行家算法 二、设计要求 (1)张金星(组长)、赵飞负责设计与实现。 (2)查阅相关资料,自学具体课题中涉及到的新知识。 (3)采用结构化、模块化程序设计方法,功能要完善,具有一定的创新。 (4)所设计的程序应有输入、输出。 (5)按要求写出课程设计报告,并于设计结束后1周内提交。其主要内容包括:封皮、课程设计任务书,指导教师评语与成绩、目录、概述、软件总体设计、详细设计、软件的调试、总结、谢启、附录:带中文注释的程序清单、参考文献。报
2、告一律用A4纸打印,中文字体为宋体,西文字体用Time New Roma,一律用小四号字,行距采用“固定值”18磅,首行缩进2字符。总体设计应配合软件总体模块结构图来说明软件应具有的功能。详细设计应用传统或N-S流程图和屏幕抓图说明,调试的叙述应配合出错场景的抓图来说明出现了哪些错误,如何解决的。 三、课程设计工作量 由于是设计小组团结协作完成设计任务,一般每人的程序量在200行有效程序行左右,不得抄袭。 四、课程设计工作计划 2022年6月23日,指导教师讲课,学生根据题目准备资料; 2022年6月24日,进行总体方案设计; 2022年6月25日2022年6月29日,完成程序模块并通过独立编
3、译; 2022年6月30日2022年7月1日,将各模块集成为一个完整的系统,并录入足够的数据进行调试运行; 2022年7月2日2022年7月5日,验收、撰写报告; 指导教师签章: 教研室主任签章 操作系统原理课程设计指导教师评语与成绩 目录 一概述 (2) 二总体方案设计 (3) 三详细设计 (4) 四程序的调试与运行结果说明 (7) 五课程设计总结 (9) 六后记 (10) 八附录 (11) 九参考文献 (18) 一概述 一、课程设计的目的。 1使学生更深入地理解和掌握该课程中的有关基本概念。 2培养学生综合运用所学知识独立完成课题的能力。 3培养学生勇于探索、严谨推理、实事求是、有错必改,
4、用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。 4提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。 5培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性。 6对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。 二、课程设计的要求。 (1)学生自由组成课程设计小组,建议每组最多不超过3个学生。 (2)选择课程设计题目中的一个课题,每组独立完成。 (3)查阅相关资料,自学具体课题中涉及到的新知识。 (4)采用结构化程序设计方法或面向对象程序设计方法进行设计,功能要完善,具
5、有一定创新。 银行家算法是操作系统当中为避免锁死的算法,并且是最具有代表性的避免锁死的算法,能够有效的在资源分配的过程中,对系统的安全性进行检测。整个算法的计算步骤为对输入的数据进行试分配,并对安全性进行检测,当系统为安全的时,依照安全序列执行程序,如果不安全则进入阻塞状态。银行家算法的来源是在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。在这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要申请资源的进程。 在避免死锁
6、的方法中,所施加的简直条件比在预防死锁的方法中限制条件要弱,有可能获得令人满意的系统性能。在该方法中,把系统的状态分为安全状态和不安全状态,只要能使系统都处于安全状态,就可避免死锁的发生。 所谓安全状态与不安全状态是指如果所有过程有可能完成执行(终止),则一个状态被认为是安全的。由于系统无法知道什么时候一个过程将终止,或者之后它需要多少资源,系统假定所有进程将最终试图获取其声明的最大资源并在不久之后终止。 三、程序的主要设计思想。 在多道程序系统中,虽然能够借助于多个进程的并发执行,来改善系统资源的利用率,提高系统的吞吐量,但是依然有风险存在,那就是锁死。所谓锁死是指,多个进程在运行中因争夺资
7、源而造成的一种僵局,当进程的这种僵持状态时,若无外力作用,它们将无法再向前推进。一组程序中,每个进程都无限等 待被该组进程中的另一进程所占有的资源,因而永远无法得到资源,这种现象就叫做进程死锁。 二总体方案设计 一、程序模块 本程序包括了四个基本模块:主函数、试分配、安全性测试、数据的输入与输出。 1、主函数 主函数用于输出系统的主要操作界面,以及调用其他的函数,完成银行家算法。 2、试分配: 对输入的进程的Max、Available、Allocation以及Request进行分配,判断是否可以正常分配。 3 、安全性测试: 当试分配完成时,通过安全性测试来对系统的安全性进行检测,安全时输出安
8、全序列,不安全时进行提醒,并且恢复到初始化时输入的数据。 二、模块之间关系 主函数可以调用系统的所有函数,以及输出功能界面,将试分配函数,安全性测试函数和输入输出函数定义在主函数当中,在需要时通过相应的选项进行调用。而试分配与安全性测试是并列的两个函数,存在执行试分配后需对安全序列进行判断。 输入输出函数,确定数值,并将相对应的数据输入到对应的模块,来进行计算。 三、数据结构 程序当中需要四种数据结构。 1、可利用资源矩阵(Available),当Available=k时,这表示系统中有该类资源k个。 2、最大需求矩阵(Max),当Max=k时,则表示进程需要的资源为k个。 3、分配矩阵(Al
9、location),当Allocation=k时,则表示进程当前已被分得k个资源。 4、需求矩阵(Need),当Need=k时,则表示进程还需要k个资源才能够完成。 四、算法思想 操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对 资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则
10、也要推迟分配。 三详细设计 一、程序模块划分: 1. 数据的初始化: 根据提示输入最大需求矩阵(Max),可利用资源量(Available),分配矩阵(Allocation)所需的数据。 2. 输出所对应的矩阵: 根据输入的数据输出对应的矩阵,并且计算出需求矩阵(Need),将完整的算法需要的数据呈现给操作者。 3. 试分配: 根据操作者所输入的进程号已经请求,对系统进行时分配。 4.安全测试 当试分配完成时可进行安全性测试,当进程间是安全的时候则可以输出相应的安全序列。如果错误,则可以回到数据的初始化状态。 二、数据判断 当输入的数据不符合规定时,可以对该数据进行判断,不符合条件重新输入,例
11、如:if(!(0Availablej) if(AvailablejMaxnm) if(MaxnmAllocationnm) if(Allocationnm0) cout |; coutendl; cout|*|*|*|*|* *|endl; /*-输出函数结束-*/ 四程序的调试与运行结果说明 一、程序调试: 1、在数据初始化当中要考虑到输入进程数是否为负数,是否为字符。 2、在安全性算法当中要考虑到当不安全时,数据能否恢复,是否可以重新进行分配。当输入的Request大于Need或者大于Available的情况,当大于是需要重新输入。 二、程序测试: 1.输入初始化: 2.矩阵输出 3. 安全序列输出 4.进程不安全时