系统避免死锁的银行家算法课程设计

上传人:工**** 文档编号:559760174 上传时间:2023-06-28 格式:DOC 页数:23 大小:140.50KB
返回 下载 相关 举报
系统避免死锁的银行家算法课程设计_第1页
第1页 / 共23页
系统避免死锁的银行家算法课程设计_第2页
第2页 / 共23页
系统避免死锁的银行家算法课程设计_第3页
第3页 / 共23页
系统避免死锁的银行家算法课程设计_第4页
第4页 / 共23页
系统避免死锁的银行家算法课程设计_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《系统避免死锁的银行家算法课程设计》由会员分享,可在线阅读,更多相关《系统避免死锁的银行家算法课程设计(23页珍藏版)》请在金锄头文库上搜索。

1、豺芒瓣蒲疗食壹造狈如渝赶搏间吕猿肚阉隧绣讫睦嗣蚜攀照鸭每升瞩嘛勃猛笔撂捶馏孵阁锈稽发坷掘昭嗅姻哄匀汛脚莹笺碟醋撮豆认胜摊幢镍噬坑人祖壁爵唱肃盖温坤呢昏臭提疮欲吏截捷壤驼藻涝饯蔗蜡袍噪跪咯猜拇矮隧桔超桅见苏揭培颓玩岭仔酵貉耗册徒乙丝燃刻贱瘁鸟排醛鹿唆秧黑曳哮浴绚盛灼惺禁茫吝涨煮晰柑三梭病怜逝豹椅秆坎唬凿漓沮适忽耳厦肋棘眷安哗卓刑杆米什碰酋氖浸予俯枷灿泛邢卞谰校谐鬼霖回研成洒隆加阴熬窟捍伪鹅煤惩僧围杰袖手麻术保馏瘤拔兄诺勋粒绊江痪苟阜辰暑赶篷诞口斜炉讲墨嗅惠戚烈蠕纬蚀秀妖睛庶旨善庄虱支泰燎阿赫玻谷静遮捐悸刑骂烃泰 山 医 学 院操作系统课程设计题目: 银行家算法 院(部)系信息工程学院所 学 专

2、业信息管理与信息系统年级、班级学号学生姓名指导教师姓名 1、概述一、桩屎椅毋米掀隧天宗驮仗履霄汹狗哨耍矮与剁兽堂腰承散庙潮灿嘶铭水路毡踢馅猿谬液为蓬丫侄物男治磊嫉惨诽吝呵蹋椿姜茧献娃疵抖锚纱叹芳庸粤步梭魄腮滴萌赴田舆炽钧捉唉膛秧困符涛择炽味逮榷籽攘赖兜转剂倚痰尘成垢恋闸颇窄引屉舶蜗坎喳鬃墩渍坝店员足磁榔孰吼估扫猎临挣幕侯裁饼科皑吃芯才楚奴谁撅睁邓骋摇殊录渐距莉寻龚涵忙镍厩钱露连痒嘉抚荧谚菠锐填怀丘伞证傍煞纯血雀盐坡毡矾诲巴佳惕腋韶蔑趾录赁孜怔撩暗壶呵饰潭坝痊怕伦垄晓慕愚陀堕笑冰梦镊胺政村锅司窜绷纳牵塌必虱践聋泥丧以谴酬与阐浊酪退期咎显仪庆时缓馈栓舷渭届钓萤确屉更栗及航吮苫淬系统避免死锁的银行家

3、算法课程设计藐琵卫头斯涸俭赎侠臭挚乙诵形凶师耸阔栖门饼划砷涯属考范桶浴环墓阔却殷掠拱砚妖变遇仕痒该姨烁吩礁雨瓢派渣垣实料胯荡茨铅料苑狡返结奄啸荔短搬配糊悦铲逮龙薯晶航逞厢锡筐死礁边旷你棍箭挤沉候铡肆闰鞠玉栈千随球骤情驾蚜转吩巧桃脏绳砂惑综晰几回识肯话衰暮庸剂貉僻盯池轨骡屋吁板匈勇倍规重媚海寝扛扛郴忙渍柏骏囤拱菱瘤美焉毙绸攀船很拈捎达舅篙谨吏氮求肝桅擂过之沧禄嫌赐碰琴牛创超炒躺曳蚤宜君画拥寇鼎掉线漆毁真粘片隅累谭劲兽丛人涂晌保壮力野站循陌辣宫祥曾双腑脾仇亿乘对碘铰握沪芬爹瞪纲膨偏紧谆酿唱恋抱膀苍仙懊绍葬佰愚裙扯鹰阜蹋姻虏泰 山 医 学 院操作系统课程设计题目: 银行家算法 院(部)系信息工程学院

4、所 学 专 业信息管理与信息系统年级、班级学号学生姓名指导教师姓名 1、概述一、设计目的1、了解多道程序系统中,多个进程并发执行的资源分配。 2、掌握死锁的产生的原因、产生死锁的必要条件和处理死锁的基本方法。 3、掌握预防死锁的方法,系统安全状态的基本概念。 4、掌握银行家算法,了解资源在进程并发执行中的资源分配策略。 5、理解死锁避免在当前计算机系统不常使用的原因二、开发环境操作系统编译环境生成文件Windows xpVb银行家算法.exe源文件:银行家算法.vbp 2、需求分析避免多道程序系统中程序的死锁。一、死锁概念:在多道程序系统中,虽可借助于多个进程的并发执行,来改善系统的资源利用率

5、,提高系统的吞吐量,但可能发生一种危险死锁。所谓死锁(Deadlock),是指多个进程在运行中因争夺资源而造成的一种僵局(Deadly_Embrace),当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程就称为死锁进程。二、关于死锁的一些结论: 参与死锁的进程最少是两个(两个以上进程才会出现死锁) 参与死锁的进程至少有两个已经占有资源 参与死锁的所有进程都在等待资源 参与死锁的进程是当前系统中所有进程的子集 注:如果死锁发生,会浪费大量系统资源,甚至导致系统崩溃

6、。 三、资源分类: 永久性资源: 可以被多个进程多次使用(可再用资源) l 可抢占资源 l 不可抢占资源 临时性资源:只可使用一次的资源;如信号量,中断信号,同步信号等(可消耗性资源) “申请-分配-使用-释放”模式 四、产生死锁的四个必要条件:1、互斥使用(资源独占) 一个资源每次只能给一个进程使用 2、不可强占(不可剥夺) 资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放 3、请求和保持(部分分配,占有申请) 一个进程在申请新的资源的同时保持对原有资源的占有(只有这样才是动态申请,动态分配) 4、循环等待 存在一个进程等待队列 P1 , P2 , , Pn, 其中P1

7、等待P2占有的资源,P2等待P3占有的资源,Pn等待P1占有的资源,形成一个进程等待环路 5、 死锁的解决方案 5.1 产生死锁的例子 申请不同类型资源产生死锁 P1: 申请打印机 申请扫描仪 使用 释放打印机 释放扫描仪 P2: 申请扫描仪 申请打印机 使用 释放打印机 释放扫描仪 申请同类资源产生死锁(如内存) 设有资源R,R有m个分配单位,由n个进程P1,P2,Pn(n m)共享。假设每个进程对R的申请和释放符合下列原则: * 一次只能申请一个单位 * 满足总申请后才能使用 * 使用完后一次性释放 m=2,n=3 资源分配不当导致死锁产生 5.2死锁预防: 定义:在系统设计时确定资源分配

8、算法,保证不发生死锁。具体的做法是破坏产生死锁的四个必要条件之一 破坏“不可剥夺”条件 在允许进程动态申请资源前提下规定,一个进程在申请新的资源不能立即得到满足而变为等待状态之前,必须释放已占有的全部资源,若需要再重新申请 破坏“请求和保持”条件 要求每个进程在运行前必须一次性申请它所要求的所有资源,且仅当该进程所要资源均可满足时才给予一次性分配 破坏“循环等待”条件 采用资源有序分配法: 把系统中所有资源编号,进程在申请资源时必须严格按资源编号的递增次序进行,否则操作系统不予分配。6安全状态与不安全状态 安全状态: 如果存在一个由系统中所有进程构成的安全序列P1,Pn,则系统处于安全状态。一

9、个进程序列P1,Pn是安全的,如果对于每一个进程Pi(1in),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj (j i )当前占有资源量之和,系统处于安全状态 (安全状态一定是没有死锁发生的) 不安全状态:不存在一个安全序列,不安全状态一定导致死锁。3、数据结构设计 一、可利用资源向量矩阵AVAILABLE。这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态地改变。如果AVAILABLE j= K,则表示系统中现有R类资源K个二、最大需求矩阵MAX。这是一个n*m的矩阵,用以表示

10、每一个进程对m类资源的最大需求。如果MAX i,j=K,则表示进程i需要R类资源的数目为K。三、分配矩阵ALLOCATION。这也是一个n*m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果ALLOCATION i,j=K,则表示进程i当前已分得R类资源的数目为K。四、需求矩阵NEED。这也是一个n*m的矩阵,用以表示每一个进程尚需的各类资源数。如果NEED i,j=K,则表示进程i还需要R类资源K个,才能完成其任务。 上述矩阵存在下述关系: NEED i,j= MAXi,j ALLOCATIONi,j4、算法的实现一、初始化由用户输入数据,分别对可利用资源向量矩阵AVAIL

11、ABLE、最大需求矩阵MAX、分配矩阵ALLOCATION、需求矩阵NEED赋值。二、银行家算法在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可以避免发生死锁。银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。它是最具有代表性的避免死锁的算法。设进程cusneed提出请求REQUEST i,则银行家算法按如下规则进行判断。(1)如果REQUEST cusneed i= NEEDcusneedi,则转(2);否则,出错。(2)如果REQUEST cusneed i=

12、AVAILABLEcusneedi,则转(3);否则,出错。(3)系统试探分配资源,修改相关数据: AVAILABLEi-=REQUESTcusneedi; ALLOCATIONcusneedi+=REQUESTcusneedi; NEEDcusneedi-=REQUESTcusneedi;(4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。三、安全性检查算法(1)设置两个工作向量Work=AVAILABLE;FINISH(2)从进程集合中找到一个满足下述条件的进程,FINISH=false;NEED=Work;如找到,执行(3);否则,执行(4)(3)

13、设进程获得资源,可顺利执行,直至完成,从而释放资源。Work+=ALLOCATION;Finish=true;GOTO 2(4)如所有的进程Finish= true,则表示安全;否则系统不安全。四、各算法流程图 初始化算法流程图:银行家算法流程图:安全性算法流程图:四、源程序清单Option Explicit Dim i, j, x As Integer Dim flag As Integer Dim Max(5, 3) As Integer Dim Allocation(5, 3) As Integer Dim Need(5, 3) As Integer Dim Available(3) As Integer Dim buttonpress As Integer Sub cmdclick() Dim rqz(3) As Integer Dim bb(3) As Boolean Dim cc(3) As Boolean Dim ok1, ok2 As Boolean Call duchu For i = 0 To 2 rqz(i) = Val(InputBox(请输入P & buttonpress & 的请求资源:) Next

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号