您好,欢迎访问三七文档
1湖南工业大学课程设计资料袋计算机与通信学院学院(系、部)2013~2014学年第1学期课程名称计算机操作系统指导教师左新娥职称讲师学生姓名梁鑫明专业班级网络1102班学号11408400219题目进程管理成绩起止日期2013年12月9日~2013年12月15日目录清单序号材料名称资料数量备注1课程设计任务书12课程设计说明书134562课程设计任务书2013—2014学年第1学期学院(系、部)计算机与通信学院专业网络工程班级111-2课程名称:计算机操作系统学生姓名:梁鑫明设计题目:进程管理指导教师:左新娥完成期限:自2013年12月9日至2013年12月15日共1周内容及任务一、设计内容进程管理程序,即实现①初始化系统中的资源类别及数量以及系统中各进程对资源的已分配量及最大需求量;②能够检测所给状态的系统安全性。③某个进程提出对各资源的申请,能够判断是否给予满足。二、设计任务课程设计说明书(纸质+电子版),内容包括:设计内容、系统分析(包括可行性分析、需求分析等)及功能分析;系统设计(要求画出系统整体功能框图、流程图、并给出相应地关键的代码且对所使用的主要数据结构进行说明等。)、设计总结(评价/遇到的问题/体会/建议等)、使用说明等。三、设计要求1.按功能要求开发系统,能正确运行。程序代码书写规范,有充足的注释。2.课程设计所使用的编程语言任选,但建议使用C或C++;3.绿色软件:程序运行不需安装,避免写系统和注册表;进度安排起止日期工作内容课程设计前一周召开动员大会,学生选题;2013-12-9~2013-12-10系统分析和设计;2013-12-11~2013-11-13熟悉软件开发工具、编码系统、系统测试以及中期答辩;2013-12-14~2013-12-15撰写并提交课程设计说明书(含电子文档)、源程序等。主要参考资料[1]罗宇、邹鹏、邓胜兰等著.《操作系统》[M].北京:电子工业出版社,2011[2]AndrewS.Tanenbaum著.陈向群等译.《现代操作系统》[M].北京:机械工业出版社,2007[3]邓胜兰编著.《操作系统基础》[M].北京:机械工业出版社,2009[4]DaveProbert著,陈向群等译《Windows操作系统原理》[M].北京:机械工业出版,2006[5]罗宇褚瑞等等著.《操作系统课程设计》[M].北京:机械工业出版,2004指导教师(签字):年月日系(教研室)主任(签字):年月日.3.课程设计说明书课程名称:计算机操作系统设计题目:进程管理专业:网络工程班级:1102学生姓名:梁鑫明学号:11408400219指导教师:左新娥2013年12月7日.4.目录1课程设计简介...............................................................51.1课目的程设计的.......................................................51.2课程设计内容.........................................................51.2课程设计原理.........................................................52课程设计实现过程...........................................................62.1算法实现.............................................................62.2系统结构框图与各模块流程图...........................................92.3测试运行结果与分析..................................................133设计总结..................................................................16参考文献....................................................................17源代码.....................................................................18.5.1课程设计简介1.1课程设计的目的(1)掌握死锁的产生的原因、产生死锁的必要条件和处理死锁的基本方法。(2)了解多道程序系统中,多个进程并发执行的资源分配。(3)掌握预防死锁的方法,系统安全状态的基本概念(4)理解死锁避免在当前计算机系统不常使用的原因。(5)掌握银行家算法,了解资源在进程并发执行中的资源分配策略。1.2课程设计内容编制银行家算法程序,即实现(1)初始化系统中的资源类别及数量以及系统中各进程对资源的已分配量及最大需求量;(2)能够检测所给状态的系统安全性。(3)某个进程提出对各资源的申请,能够判断是否给予满足。1.3课程设计原理我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。为保证资金的安全,银行家规定:(1)当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客;(2)顾客可以分歧贷款,但贷款的总数不能超过最大需求量;(3)当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款;(4)当顾客得到所需的全部资金后,一定能在有限的时间里归还所有的资金.操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。.6.2课程设计实现过程2.1算法实现(1)初始化这组进程的最大资源请求和依次申请的资源序列。把各进程已占用和需求资源情况记录在进程控制块中。假定进程控制块的内容包括:进程名,状态,当前申请量,资源需求总量,已占资源量,能执行完标志。其中,进程的状态有:就绪、等待和完成。当系统不能满足进程的资源请求时,进程处于等待态。资源需求总量表示进程运行过程中对资源的总的需求量。已占资源量表示进程目前已经得到但还未归还的资源量。因此,进程在以后还需要的剩余资源量等于资源需要总量减去已占资源量。显然每个进程的资源需求总量不应超过系统拥有的资源总量。(2)银行家算法分配资源的原则是:当某个进程提出资源请求时,假定先分配资源给它,然后查找各进程的剩余请求,检查系统的剩余资源量是否由于进程的分配而导致系统死锁。若能,则让进程等待,否则,让进程的假分配变为真分配。a)查找各进程的剩余请求,检查系统的剩余资源量是否能满足其中一进程。如果能,则转b)。b)将资源分配给所选的进程,这样,该进程已获得资源最大请求,最终能运行完成。标记这个进程为终止进程,并将其占有的全部资源归还给系统。重复第a)步和第b)步,直到所有进程都标记为终止进程,或直到一个死锁发生。若所有进程都标记为终止进程,则系统的初始状态是安全的,否则为不安全的。若安全,则正式将资源分配给它,否则,假定的分配作废,让其等待。数据结构:#defineMAXPROCESS50/*最大进程数*/#defineMAXRESOURCE100/*最大资源数*/intAVAILABLE[MAXRESOURCE];/*可用资源数组*/intMAX[MAXPROCESS][MAXRESOURCE];/*最大需求矩阵*/intALLOCATION[MAXPROCESS][MAXRESOURCE];/*分配矩阵*/intNEED[MAXPROCESS][MAXRESOURCE];/*需求矩阵*/intREQUEST[MAXPROCESS][MAXRESOURCE];/*进程需要资源数*/boolFINISH[MAXPROCESS];/*系统是否有足够的资源分配*/intp[MAXPROCESS];/*记录序列*/intWork[MAXRESOURCE];/*工作数组*/.7.intm,n;/*m个进程,n个资源*/stringshowdata1[4]={max,allo,need,aval};/*绘制资源以及进程状态时使用*/stringshowdata2[5]={work,need,allo,w+al,finish};/*绘制银行家算法过程时使用*/关键代码:voidBank()/*银行家算法*/{inti,cusneed;/*cusneed为进程*/charagain;while(1){cout请输入要申请资源的进程号(注:第个进程号为,依次类推):P;cincusneed;cout\n请输入进程所请求的各资源的数量endl;for(i=0;in;i++){cinREQUEST[cusneed][i];}for(i=0;in;i++){if(REQUEST[cusneed][i]NEED[cusneed][i]){cout您输入的请求数超过进程的需求量!请重新输入!endl;continue;}if(REQUEST[cusneed][i]AVAILABLE[i]){cout您输入的请求数超过系统有的资源数!请重新输入!endl;continue;}.8.}for(i=0;in;i++)/*先分配资源*/{AVAILABLE[i]-=REQUEST[cusneed][i];ALLOCATION[cusneed][i]+=REQUEST[cusneed][i];NEED[cusneed][i]-=REQUEST[cusneed][i];}if(Safe()){cout同意分配请求!endl;}else{cout您的请求被拒绝!endl;for(i=0;in;i++)/*资源分配后不安全,回滚分配资源操作*/{AVAILABLE[i]+=REQUEST[cusneed][i];ALLOCATION[cusneed][i]-=REQUEST[cusneed][i];NEED[cusneed][i]+=REQUEST[cusneed][i];}}for(i=0;im;i++){FINISH[i]=false;}cout您还想再次请求分配吗?是请按y/Y,否请按其它键endl;cinagain;if(again=='y'||again=='Y'){continue;}break;}}.9.2.2系统结构框图与各模块流程图(1)系统结构框图:结束开始调用初始化函数(Init)图1系统结构框图安全性检测(Safe)银行家算法(Bank)安全YN.10.(2)初始化流程图:结束返回Init()开始输入进程的数目m图2初始化流程图输入资源的种类n输入AVAILABLE[i]输入正确YN输入MAX[i][j]输入ALLOCATION[i][j]显示当前系统状态(iShow)提示错误,重新输入相应数据.11.(3)安全性检测流程图结束返回Safe()开始绘制结果表格头部(fShow)图3安全性检测流程图Work[i]=AVAILABLE[i];FINISH[i]=false;输出找到的安全序列,返回trueNEED[i]=Work&&FINISH[i]=falseYNWork[i]+=ALLOCATION[i]FINISH[i]=true输出进程及资源变化结果系统不安全,返回false所有进程FINISH[i]=ture;YN.12.(
本文标题:编程模拟银行家算法
链接地址:https://www.777doc.com/doc-3274332 .html