免责声明:文档在线网中所有的文档资料均由文档在线网会员提供,该文档资料的版权属于提供者所有。文档在线网会对会员提供的文档资料进行筛选和编辑,但是并不声明或保证其内容的合法性和正确性。第-1-页课程设计(论文)任务书信息工程学院计算机专业3班一、课程设计(论文)题目资源管理系统的设计与实现——银行家算法实现二、课程设计(论文)工作自2008年6月23日起至2008年6月28日止。三、课程设计(论文)地点:5#204四、课程设计(论文)内容要求:1.本课程设计的目配合《计算机操作系统》课程的教学,通过模拟操作系统原理的实现,使学生能更深刻地领会操作系统工作原理和操作系统实现方法的理解,并可练习程序设计,特开设此课程设计。2.课程设计的任务及要求1)基本要求:用你熟悉语言编程实现一个资源管理系统,该系统必须包括资源的添加、删除和修改等功能,并且允许其它进程来申请这里的资源,任何一个进程来申请资源时,必须先登记该进程对资源的申请要求,然后由系统检查当前资源的状况,并用银行家算法和安全性算法来检查是否允许分配资源给进程。每个进程申请资源的情况必须进行记录,并作为课程设计报告的一部分数据。2)创新要求:在基本要求达到后,可进行创新设计,如改善算法性能、友好的人机界面等。3)课程设计论文编写要求(1)要按照书稿的规格打印与写课程设计论文(2)论文包括目录、功能描述、设计思路、具体实现、运行调试与分析讨论、设计体会与小结、参考文献、附录(源代码)等(3)课程设计论文装订按学校的统一要求完成4)答辩与评分标准:(1)考勤与学习态度:20分;(2)设计思路:20分;免责声明:文档在线网中所有的文档资料均由文档在线网会员提供,该文档资料的版权属于提供者所有。文档在线网会对会员提供的文档资料进行筛选和编辑,但是并不声明或保证其内容的合法性和正确性。第-2-页(3)代码实现:20分;(4)调试与分析:20分;(5)回答问题:10分;(6)论文规范性:10分。5)参考文献[1]汤子瀛,哲凤屏,汤小丹.《计算机操作系统》.西安电子科技大学出版社[2]谭浩强《C程序设计》(第三版)清华大学出版社[3])课程设计进度安排内容天数地点1天5#2041天5#2041天5#204学生签名:2008年6月28日课程设计(论文)评审意见(1)考勤与态度(20分):优()、良()、中()、一般()、差();(2)设计思路(20分):优()、良()、中()、一般()、差();(3)代码实现(20分):优()、良()、中()、一般()、差();(4)调试与分析(20分):优()、良()、中()、一般()、差();(5)回答问题(10分):优()、良()、中()、一般()、差();(6)论文规范性(10分):优()、良()、中()、一般()、差();评阅人:职称:讲师2008年6月30日免责声明:文档在线网中所有的文档资料均由文档在线网会员提供,该文档资料的版权属于提供者所有。文档在线网会对会员提供的文档资料进行筛选和编辑,但是并不声明或保证其内容的合法性和正确性。第-3-页目录绪论...................................................................................................-1-一、功能描述................................................................................-2-二、设计思路................................................................................-3-2.1银行家算法中的数据结构...............................................-3-2.2银行家算法.......................................................................-3-2.3安全性算法............................................错误!未定义书签。三、具体实现................................................................................-5-3.1实现过程................................................错误!未定义书签。3.2流程图....................................................错误!未定义书签。四、运行调试及结果分析............................................................-7-五、设计体会与小结....................................................................-9-六、参考文献..............................................................................-10-七、附录(源代码).......................................................................-11-免责声明:文档在线网中所有的文档资料均由文档在线网会员提供,该文档资料的版权属于提供者所有。文档在线网会对会员提供的文档资料进行筛选和编辑,但是并不声明或保证其内容的合法性和正确性。第-1-页绪论这次课程设计要求完成一个资源管理系统,该系统必须包括资源的添加、删除和修改等功能,并且允许其它进程来申请这里的资源,任何一个进程来申请资源时,必须先登记该进程对资源的申请要求,然后由系统检查当前资源的状况,并用银行家算法和安全性算法来检查是否允许分配资源给进程。通过课程设计,加深我们对利用银行家算法避免死锁的理解。在设计中主要的难点是用语言编写银行家算法和安全性算法,使系统资源分配能安全进行,避免系统死锁。具体要求如下:(1)模拟一个银行家算法;(2)初始化时让系统拥有一定的资源;(3)如果预分配后,系统处于安全状态,则修改系统的资源分况;(4)如果预分配后,系统处于不安全状态,则提示不能满足请求,此次课程设计的主要内容时模拟实现动态资源分配。同时要求编写和调试一个系统动态资源的简单模拟程序,观察死锁产生的条件,并使用适当的算法,有效的防止和避免死锁的发生。免责声明:文档在线网中所有的文档资料均由文档在线网会员提供,该文档资料的版权属于提供者所有。文档在线网会对会员提供的文档资料进行筛选和编辑,但是并不声明或保证其内容的合法性和正确性。第-2-页一、功能描述在多道程序系统中,虽可借助于多个进程的并发执行,来改善系统的资源利用提高吞吐量,但可能发生一种危险——死锁。所谓死锁,是指多个进程运行中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,他们都无法再向前推进。虽然进程在运行过程中,可能发生死锁,但死锁的发生必须同时具备四个条件:互斥条件、请求和保持条件、不剥夺条件、环路等待条件;防止死锁的机构只须确保上述四个条件之一不出现,则系统不会发生死锁。系统的状态分为安全状态和不安全状态,只要能使系统都处于安全状态,便可避免死锁。所谓安全状态,是指系统能按某种进程顺序(P1,P2,…,Pn),来为每个进程Pi分配其所需分配,直至满足每个进程对资源的最大需求,使每个进程都可顺利地完成。如果系统无法找到一个这样地安全系列,则称系统处于不安全状态。在操作系统中研究资源分配策略时也有类似的问题,系统中有限的资源要供多个进程使用,必须保证得到资源的进程能在有限的时间内归还资源,以供它进程使用资源。如果资源分配不得当就会发生进程循环等待资源,各进程都无法继续执行下去的死锁现象。而最有代表性的避免死锁的算法,是Dijkstra的银行家算法。银行家算法是避免死锁的一种重要方法,在课程设计中用C语言编写一个资源管理系统,并要用银行家算法和安全性算法检查是否允许分配资源给进程,避免死锁。通过课程设计,加深我们对了解有关资源申请、避免死锁等概念,并加深我们对银行家算法理解。提高了我们分析、解决问题的能力。免责声明:文档在线网中所有的文档资料均由文档在线网会员提供,该文档资料的版权属于提供者所有。文档在线网会对会员提供的文档资料进行筛选和编辑,但是并不声明或保证其内容的合法性和正确性。第-3-页二、设计思路在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。银行家算法是避免死锁的一种重要方法,为实现银行家算法,系统必须设置若干数据结构。2.1银行家算法中的数据结构1)可利用资源向量Available是个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目。如果Available[j]=K,则表示系统中现有Rj类资源K个。2)最大需求矩阵Max这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K。3)分配矩阵Allocation这也是一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation[i,j]=K,则表示进程i当前已分得Rj类资源的数目为K。4)需求矩阵Need。这也是一个n×m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成其任务。Need[i,j]=Max[i,j]-Allocation[i,j]2.2、银行家算法设Requesti是进程Pi的请求向量,如果Requesti[j]=K,表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:如果Requesti[j]≤Need[i,j],便转向步骤2;否则认为出错,因为它所需要的资源数已超过它所宣布最大值。1)如果Requesti[j]≤Available[j],便转向步骤(3);否则,表示尚无足够资源,Pi须等待。免责声明:文档在线网中所有的文档资料均由文档在线网会员提供,该文档资料的版权属于提供者所有。文档在线网会对会员提供的文档资料进行筛选和编辑,但是并不声明或保证其内容的合法性和正确性。第-4-页2)系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值:Available[j]∶=Available[j]-Requesti[j];Allocation[i,j]∶=Allocation[i,j]+Requesti[j];Need[i,j]∶=Need[i,j]-Requesti[j];3)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则,将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。2.3、安全性算法1)设置两个向量:工作向量Work:它表示系统可提供给进程继续运行所需的各类资源数目,它含有m个元素,在执行安全算法开始时,Work∶=Available;工作向量Finish:它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finish[i]∶=false;当有足够资源分配给进程时,再令Finish[i]∶=true。2)从进程集合中找到一个能满足下述条件的进程:Finish[i]=false;Need[i,j]≤Work[j];若找到,执行(3),否则,执行(4)3)当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:Work[j]∶=