欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    死锁避免算法设计报告.docx

    • 资源ID:499882       资源大小:102.50KB        全文页数:12页
    • 资源格式: DOCX        下载积分:5
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要5
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    死锁避免算法设计报告.docx

    1、漳州师范学院操作系统课程设计死锁防止算法设计姓名:学号:系另U:专业:年级:指导教师:一、课程设计题目介绍含设计目的死锁防止算法设计是通过模拟实现银行家算法实现死锁防止目的:1、了解进程产生死锁的原因,了解为什么要进行死锁的防止。2、掌握银行家算法的数据结构,了解算法的执行过程,加深对银行家算法的理解。3、通过运用Dijkstra的银行家算法来防止多个进程运行中因争夺资源而造成僵局,即死锁要求:本课程设计可以实现教材节中所描述的银行家防止死锁算法。可自定义进程数目、资源类型和每种类型资源的数目;可输入每个进程对每种资源的最大需求、已经获得的数量;当某进程发起某种资源请求时,计算系统状态是否平安

    2、思想:操作系统按照银行家制定的规那么为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量那么按当前的申请量分配资源,否那么就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。假设超过那么拒绝分配资源,假设没有超过那么再测试系统现存的资源能否满足该进程尚需的最大资源量,假设能满足那么按当前的申请量分配资源,否那么也要推迟分配,从而到达死锁的防止。二、总体设计含系统的结构、原理框图或模块介绍等1 .系统的结构2 .原理框图从主函数开始进入银行家算法系统,先调用初始化

    3、函数ChUShihUa()分别输入Allocationij,Maxij,Ally并判断是否符合条件,在调用函数ShOW(),输出当前状态AVaiIable,Maxij,Allocationij,Needij,然后调用平安性算法函数safe()判断在该时刻是否处于平安状态,并输出平安序列。然后调用银行家算法函数bank。进行试分配后再调用平安性算法函数判断在该时刻是否处于平安状态,假设不平安,那么恢复试分配时改变的值。三、详细设计含主要的数据结构、程序流程图等1 .数据结构资源的总数量Alli:是个含有i个元素的数组,其中的每一个元素代表一类资源的总数量。如果Ani=K,那么表示系统中现有i类资

    4、源总数为K个。可利用资源向量AVailabIei:是个含有i个元素的数组,其中的每一个元素代表一类可利用的资源数目。如果AVaiIablei=K,那么表示系统中现有i类资源K个。最大需求矩阵Maxij:这是一个iXj的矩阵,它定义了系统中i个进程的每一个进程对j类资源的最大需求。如果Maxi11jnT再输入该进程申请各类资源的数量,没输入一个要申请的资源数都要用dowhile循环判断申请输入的情况。判断申请是否大于需求量,如果(RequestjNeedkj)那么出错,提示重新输入。否那么继续判断申请是否大于可利用量,如果(ReqUeStjAvailablej)那么出错,本次申请不成功,进程等待

    5、否那么进行试分配。试分配后调用平安性检查算法safe()检测此时系统是否处于平安状态如果平安继续运行,如果不平安将试分配的数据恢复。b、进程i发出请求申请k个j资源,Requestij=k(1)检查申请量是否不大于需求量:Requestij=needi,j,假设条件不符重新输入,不允许申请大于需求量。(2)检查申请量是否小于系统中的可利用资源数量:Requestij=availablei,j,假设条件不符就申请失败,阻塞该进程,用goto语句跳转到重新申请资源。(3)假设以上两个条件都满足,那么系统试探着将资源分配给申请的进程,并修改下面数据结构中的数值:AvailableEi,j=Avai

    6、lablei,j-Requestij;AllocationiEj=Allocationij+Requestij;neediEj=needij-Requestij;(4)试分配后,执行平安性检查,调用safe()函数检查此次资源分配后系统是否处于平安状态。假设平安,才正式将资源分配给进程;否那么本次试探分配作废,恢复原来的资源分配状态,让该进程等待。(5)用dowhile循环语句实现输入字符y/n判断是否继续进行资源申请。for(j=0;j=Needij的资源类数,如果满足那么给counter加一,如果counter=m,那么表示i进程的每类资源都符合Workj=Needij,把此时进程i的值存

    7、入存储平安序列P1中,使FiniShi=0,表示i进程标志为可分配。释放资源使Workj=Workj+Allocationij,给1加一图3平安性检查算法safe()流程图b、检查过程:(1)设置两个向量:工作向量Work,它表示系统可提供应进程继续运行所需的各类资源数目,在执行平安性算法开始时,Work=AvailableoFinish,它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做FiniSh当有足够的资源分配给进程时,再令Finishi=lo(2)在进程中查找符合以下条件的进程:条件1:Finishi=0;条件2:needij=Workj假设找到,那么执行步骤否那么,执行

    8、步骤(4)(3)当进程获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:Workj=Workj+AllocationEij;Finish口;gotostep2;(3)如果所有的FiniShi=l都满足,那么表示系统处于平安状态,否那么,处于不平安状态。四、运行结果含测试和用户使用说明书1 .测试与分析(1)初始化:输入进程的数量储资源种类数m,已分配的资源数AllocationEij,各进程对各类资源的最大需求数Maxij,各种资源的总数量Allo(2)显示当前状态:输出各类资源尚可利用的数量Available,各进程对各类资源的最大需求数MaXij,已分配的资源数AlIOC

    9、at配nij,尚需分配的资源数Needij,以及平安序列。(3)输入申请资源数ReqUeStj:输入申请资源数ReqUeSt1=(1,0,2),并逐个判断是否满足条件:Requestij=needi,j;Requestij=availablei,j.如果满足条件,申请资源成功。输出平安序列以及各类资源尚可利用的数量AVaiIable,各进程对各类资源的最大需求数Maxij,已分配的资源数Allocationtij,尚需分配的资源数Needij,的值输入申请资源数ReqUeSt4=(3,3,0),进程4申请资源。的数量:3小于进程4的尚需资源4,但是它大于可利用资源2,所以没有那么多资源,本次申

    10、请不成功,应该阻塞等待。(4)输入申请资源数ReqUeSt0=(0,2,0):虽然ReqUeSt0=0,2,0)满足条件:Requestij=nedi,j;Requestij=avaiIablei,j,但是试分配后,状态不平安,所以恢复原状态。显示各类资源尚可利用的数量AVaiIable,各进程对各类资源的最大需求数Maxij,已分配的资源数AllOCat配nij,尚需分配的资源数Needij,的值。2 .用户说明书程序开始运行后,首先进行初始化数据,提示输入进程的数量n,资源种类数m,已分配的资源数Allocationij,之后按屏幕显示的提示操作。五、课程设计小结与心得体会设计开始的时候,

    11、由于整体对银行家算法还没有完全理解透,再加上没认真预习、思考不够认真、对书本的知识不够扎实,所以一脸惘然,不知道从哪里开始着手.才发现这次课程设计没我想得那么简单,回寝室后,连忙查看相关的书,以及通过上网查找相关的资料,最终对银行家算思想有了彻底的了解,银行家分配算法原那么是:当进程申请资源时,如果系统中现存资源数能满足进程的当前资源申请量以及申请的资源数要小于需要的资源数(requestj=neediLj|requestj=availablej)并且还要验证是否有平安,只有在平安情况下才能将资源分配给它,也即银行家算法能防止死锁的发生。接下来的任务就是开始编写程序,刚开始由于这学期对c+知识

    12、没有学习好,所以刚编写时有很大的难度,把一些本来可以用很少话解决的问题很多都复杂化了,这时我才发现我有那么多的缺乏,只好重新拿出以前的书,把不懂的大概都看了一遍,脑子里总算有了理解.通过这次实践,我相信,只要自己在每一次实践中都能仔细思考,课程设计其实都不会很难,关键在于自己能不能认真思考,能不能亲自动手做实验,而不是想着其他人的劳动果实,其次你还要多操作,只有多操作才能从中发现问题,才能及时向老师和同学请教,解决问题,从而更好的掌握书本中知识。还有通过这次实践也让我懂得了,要认真对待每一次设计,通过这次设计对课本上知识有了更深刻的认识,得到了很多从书本中得不到的经验。指导老师评语:优秀良好及格成绩评定:不及格指导老师签名:


    注意事项

    本文(死锁避免算法设计报告.docx)为本站会员(田海滨)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!




    宁ICP备18001539号-1

    三一文库
    收起
    展开