





























1、该文档不包含其他附件(如表格、图纸),本站只保证下载后内容跟在线阅读一样,不确保内容完整性,请务必认真阅读。
2、有的文档阅读时显示本站(www.woc88.com)水印的,下载后是没有本站水印的(仅在线阅读显示),请放心下载。
3、除PDF格式下载后需转换成word才能编辑,其他下载后均可以随意编辑、修改、打印。
4、有的标题标有”最新”、多篇,实质内容并不相符,下载内容以在线阅读为准,请认真阅读全文再下载。
5、该文档为会员上传,下载所得收益全部归上传者所有,若您对文档版权有异议,可联系客服认领,既往收入全部归您。
法由于能用于银行系统现金贷款的发放而得名。
银行家算法是在确保当前系统安全的前提下推进的。
对进程请求先进行安全性检查,来决定资源分配与否,从而确保系统的安全,有效的避免了死锁的发生。
该论文在理解和分析了银行家算法的核心思想以及状态的本质涵义的前提下,对算法的实现在总体上进行了设计,包括在对算法分模块设计,并对各个模块的算法思想通过流程图表示,分块编写代码,并进行测试,最后进行程序的测试,在设计思路上严格按照软件工程的思想执行,确保了设计和实现的可行,可信。
代码实现采用语言。
关键词银行家算法死锁避免死锁安全性序列操作系统课程设计报告中文摘要绪论课题背景课题意义银行家算法死锁安全性序列需求分析问题描述基本要求数据流模型概要设计模块的划分模块调用关系各模块之间的接口程序流程图详细设计数据结构选取分析数据结构设计算法整体设计与调用模块设计与时间复杂度分析系统资源初始化函数安全性算法接受进程请求试分配对试分配后的系统进行安全性检查程序流图操作系统课程设计报告系统以及进程资源初始化的程序流程图安全性算法的程序流程图接受进程请求试分配的程序流程图对试分配后的系统进行安全性检查的程序流程图程序分析测试分模块分析与测试初始化系统资源模块的测试试分配模块的测试安全模块的调试集成测试小结参考文献附录源代码绪论绪论课题背景在多道程序系统中,虽可以借助多个进程的并发执行来改善系统的资源利用率,提高系统吞吐量,但可能发生种危险死锁,即多个进程在运行过程中因争夺资源而造成的种僵局,若无外力作用,将无法再向前推进。
如此,寻求种避免死锁的方法便显得有为重要。
死锁的产生般的原因有两点竞争资源和进程间推进顺序非法。
因此,我们只需在当前的有限资源下,找到组合法的执行顺序,便能很好的避免死锁,我们称它为安全序列。
而银行家算法起源于银行系统的发放贷款,和计算机操作系统的资源分配完全符合,因此可以借鉴该算法的思想,设计出种有效的算法程序,解决该问题。
课题意义运用软件工程的方法指导设计和实现,即是对这学期刚刚学过的软件工程课的复习,又是次实战演练,从而提高自己的分析问题,解决问题和动手能力通过整个算法的设计与实现进步加深了对算法的理解和多道程序下的计算机系统资源分配现状,为以后进步的学习打下了良好的基础。
银行家算法我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。
为保证资金的安全,银行家规定当个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客操作系统课程设计报告顾客可以分歧贷款,但贷款的总数不能超过最大需求量当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款来源代写网当顾客得到所需的全部资金后,定能在有限的时间里归还所有的资金操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。
当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。
若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。
死锁死锁是进程死锁的简称,是由于年研究银行家算法时首先提出来的。
是指多个进程循环等待它方占有的资源而无限期地僵持下去的局面。
很显然,如果没有外力的作用,那麽死锁涉及到的各个进程都将永远处于封锁状态。
它是计算机操作系统乃至并发程序设计中最难处理的问题之。
实际上,死锁问题不仅在计算机系统中存在,在我们日常生活中它也广泛存在。
在计算机系统中,涉及软件,硬件资源都可能发生死锁。
例如系统中只有台驱动器和台打印机,个进程占有了驱动器,又申请打印机另进程占有了打印机,还申请。
结果,两个进程都被阻塞,永远也不能自行解除。
安全性序列安全序列的的实际意义在于系统每次进行资源分配后,如果对于系统中新的资源状况,存在个安全序列,则至少存在条确保系统不会进入死锁的路径。
按照该序列,银行家可以实施个有效的分配过程使得所有客户得到满足银行家算法的核心在于安全序列的产生。
安全序列正是种安全的进程推操作系统课程设计报告进顺序需求分析需求分析问题描述运用银行家算法,避免死锁的发生。
在确保当前系统安全的前提下推进的。
对进程请求先进行安全性检查,来决定资源分配与否,从而确保系统的安全,有效的避免了死锁的发生。
问题的关键在于安全性算法,即找安全性序列。
基本要求从键盘输入当前系统的资源信息,包括当前可用资源,每个进程对各类资源的最大需求量,每个进程当前已分配的各个资源量和每个进程尚需要的各个资源量,输出结果显示在界面上输入进程请求,按照设计好的安全性算法进行检查,得到结果并输出整个执行过程的相关信息和最终结果主要包括资源分配表和安全序列要求要有各种异常的处理,程序的可控制性和可连续性执行。
包括对进程的存在有无检查,请求向量的不合法检查,试分配失败后的数据恢复和重新接受进程请求等。
数据流模型输入信息安全性检查试分配安全性检查输出结果初始化概要设计概要设计模块的划分由于该算法规模较小,所以选用结构化的设计方法,将该系统划为五块,分别是主模块,处在整个系统的最高层,负责组织调用其他模块。
初始化模块,负责从键盘读入系统资源和进程状态,并将系统初识资源分配状态打印。
试分配模块,负责处理进程请求,和相应的数据结构的修改,已经特殊情况的处理。
安全性检查,负责试分配后的安全性检查,以及系统不安全时的资源恢复。
模块调用关系各模块之间的调用如下图示各模块之间的接口主模块初始化试分配安全性检查操作系统课程设计报告试分配模块与安全性检查之间接口通过检查的真假了判断是否执行。
个地址,返回给主模块的信息,不为时表示试分配成功,否则系统转入相应异常处理。
与主模块之间的接口,为真则调用打印函数,输出最终结果,否则调用恢复函数,恢复之前系统状态程序流程图详细设计详细设计数据结构选取分析该算法中用到了较多的数据,基于程序的易实现和较好的结构,决定采用结构链表,以进程为单位结点。
数据结构设计进程标号表示个进程对类资源的最大需求表示个进程已分配到类资源的个数表示个进程尚需要类资源的个数指向下个结点进程其中每个数组元素表示当前类资源的可用数目,初始化为系统所提供的资源的最大数目请求向量存储当前的值,以便输出存储安全序列,以便后面排序算法整体设计与调用主函数主要分四大块首先需要初始化,存储系统当前状态信息调用安全算法,检测当前系统安全状态,若安全则进行下步,否则打印相关信息,程序退出。
操作系统课程设计报告调用试分配函数,进行试分配,若试分配成功,修改相关数据结构,打印当前系统资源分布图,转下步,否则,打印提示信息,接收其他请求向量。
再次调用安全性算法,检查试分配以后的系统安全性,若安全打印安全性序列和当前系统资源分布图,并进入新轮的执行。
否则之前的试分配作废,恢复试分配之前的数据结构,输出相关提示信息,接收下个进程请求模块设计与时间复杂度分析系统资源初始化函数首先读入系统可用资源。
用函数动态创建进程并且输入相关资源。
进程之间以链表组织,输入结束初始化。
操作系统课程设计报告将结果打印出来。
对试分配后的系统,进行安全性检查。
执行过程同大致样,唯点在于当找不到安全序列时,将本次试分配作废,恢复该次试分配之前的数据结构。
程序流图系统以及进程资源初始化的程序流程图,如下图第步,读入当前系统可用资源第二步,读入进程资源,建立进程链表,输入结束初始化第三步,打印当前系统资源分配表。
操作系统课程设计报告安全性算法的程序流程图,如上图第步,初识化第二步,判断异常情况第三步,函数,找到当前可执行的进程第四步,执行安全检查,并显示检查后结果,返回给。
接受进程请求,试分配的程序流程图,如下图第步,指针指向弧的结点第二步,指向邻接表的首节点第三步,指针下移,直到为空,对试分配后的系统,进行安全性检查的程序流程图,和大致样,唯点在于当找不到安全序列时,将本次试分配作废,恢复该次试分配之前的数据结构。
如下图回收资源程序分析测试程序分析测试分模块分析与测试函数的书写分模块进行,每完成个模块进行调试测试直到该函数运行无误。
初始化系统资源模块的测试按提示输入,以结束整个初始化过程,并打印结果。
上图的效果起初不理想,经过些调整后,显示才比较理想。
操作系统课程设计报告试分配模块的测试试分配模块,主要是在系统进过第次安全检查后,对系统资源的次尝试性分配,试分配完成后,相关的数据结构被修改。
安全模块的调试试分配前的安全算法,结果如果输出个安全性序列,并且经过人工检查该安全性序列,确实有效,则该模块正确如果系统不安全,打印出相关信息,返回上层。
效果如下图示试分配后的安全算法,结果如果输出个安全性序列,并且经过人工检查该安全性序列,确实有效,则该模块正确否则,之前的试分配作废,恢复试分配前的资源状态。
操作系统课程设计报告集成测试各模块测试通过后,集成在起测试,系统初始资源和模块测试时保持致,以下是组测设用例以及结果,基本包括了该算法的所有情况。
鉴于整个过程的截图较大,所以省略,部分过程可参看上面模块测试截图。
结果无此进程结果系统不能满足结果两次安全性检查都通过,并打印出最终结果结果试分配后,系统不安全,试分配作废结果两次安全性检查都通过,并打印出最终结果小结小结在银行家算法的课程设计中,首先对该算法的思想进行分析,大致需要几个模块。
首先,在网上收集了些关于银行家算法的资料,包括它
