关于进程中死锁问题的设计研究

上传人:无*** 文档编号:90586634 上传时间:2022-05-15 格式:DOC 页数:9 大小:248.50KB
收藏 版权申诉 举报 下载
关于进程中死锁问题的设计研究_第1页
第1页 / 共9页
关于进程中死锁问题的设计研究_第2页
第2页 / 共9页
关于进程中死锁问题的设计研究_第3页
第3页 / 共9页
资源描述:

《关于进程中死锁问题的设计研究》由会员分享,可在线阅读,更多相关《关于进程中死锁问题的设计研究(9页珍藏版)》请在装配图网上搜索。

1、.关于进程中死锁问题的研究摘要死锁问题是Dijkstra于1965年研究银行家算法时首先提出的,也是计算机操作系统乃至并发程序设计中非常重要但又最难处理的问题之一。实际上死锁问题是一种具有普遍性的现象。不仅在计算机系统中,就是在其它各个领域乃至日常生活中,也都是屡见不鲜的。掌握对死锁的处理方法,对于指导我们的现实生活,都会有积极地意义。本文研究的是操作系统进程中的死锁问题。从理论上说,死锁问题的研究涉及到计算机科学中一个基本问题,即并行程序的终止性问题。本文将通过对死锁的基本概念、产生的原因和产生死锁的四个必要条件的了解,找出合理的预防、避免、检测和解除的有效方法,并将其运用到实际问题中去。关

2、键字:死锁的预防 死锁的避免 银行家算法 死锁的检测 死锁的解除 一、死锁的基本概念1.1死锁的概念当两个或两个以上的进程因竞争系统资源而无休止的相互等待时,我们就称这些进程是死锁的,或者说它们处于死锁状态。1.2 死锁产生的原因1、各进程竞争有限的资源。 2、进程推进顺序不当。1.3 产生死锁的四个必要条件 1、互斥条件。指在一段时间内,一个资源只能由一个进程独占使用,若别的进程也要求该资源,则须等待直至其占用者释放。 2、请求和保持条件。指进程已经保持了至少一个资源,但又提出新的请求,而该资源已被其他进程占用,此时请求进程阻塞,但又不释放自己已获得的资源。 3、不可剥夺条件。进程所获得的资

3、源在未使用完之前,不能被其他进程强行夺走,而只能由其自身释放。 4、环路条件。指存在一个等待进程集合,正在等待一个占用的资源,正在等待一个占用的资源,正在的等待一个由占用的资源。这些进程及其请求的资源构成一个进程资源的有向循环图。二、死锁的处理2.1 死锁的预防死锁的预防是排除死锁的静态策略,因为我们已经知道了导致死锁产生的四个必要条件,那么我们只须破坏这四个条件中的一个即可预防死锁。为此介绍如下4种方法。1、 共享使用法允许一个资源部件可以由多个进程同时使用。这种方法在早期曾使用过,但实践证明这种方法对有些资源是行不通的。如对宽行就是由各个进程同时使用,结果在打印纸上交替出现了不同进程的不同

4、信息,从而给用户带来很大的不便,故对此类资源一般都采用独占方式。由于对大多数资源来说互斥使用是完全必要的,所以通过破坏互斥条件来防止死锁是不现实的。2、 预先静态分配法在进程调度程序选择进程时,仅当进程所需要的全部资源都能满足时,才调度它进入内存运行。或者说,在进程尚处于运行前的静态情况下,就为它分配了所需要的全部资源。显然这是一种简单而安全的预防死锁的方法,但是,若资源搭配不当,就会导致进程将延迟运行,资源利用率低。3、 采用剥夺式调度法 这种方法主要用在处理器和存储器资源调度上,是调度进程自身的开销,以及主存和磁盘的对换进程、数据的开销。但对于需要由操作员装卸私有数据的外围设备,此法就不宜

5、使用。这种方法实现起来比较复杂,且要付出很大的代价,还可能导致反复地请求和释放资源,而使进程的执行无限延迟。这不仅延长了进程的周转时间,还增加了系统的开销,降低了系统的吞吐量。4、 有序资源使用法 系统设计者把系统中所有资源都赋予一个唯一的编号。如令输入机为1,打印机为2,穿孔机为3,磁带机为4,等等。此法要求每个进程均应按照严格递增的次序请求资源,并且除非前一要求得到满足,否则不允许做进一步请求。这种方法较前一种方法提高了资源的利用率。特别是只要系统把比较重要或稀少的资源安排为较高的序号,便可能使最有价值的资源的利用率大大提高。但是,因为进程实际需要资源的次序并不一定与系统规定的次序相符,因

6、此可能提前分配了暂时不需要的小序号资源,从而造成资源的浪费。2.2 死锁的避免死锁的避免是一种排除死锁的动态策略,允许进程动态地申请资源,但系统在分配资源之前,要先计算资源分配的安全性,若此次分配不会导致系统进入不安全状态,便将资源进行分配 ,否则不予以分配。Dijkstra的银行家算法是最具代表性的避免死锁的算法,这种方法是以银行系统所采用的借贷策略为基础建立的模型。下面将详细介绍银行家算法。1、 银行家算法中的数据结构1可利用资源向量Available这是一个含有个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目。如果,则表示系统中现有类

7、资源个。 2最大需求矩阵Max这是一个的矩阵,它定义了系统中个进程中的每一个进程对类资源的最大需求。如果,则表示进程需要类资源的最大数目为。 3分配矩阵Allocation这也是一个的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果,则表示进程当前已分得类资源的数目为。 4需求矩阵Need这也是一个的矩阵,用以表示每一个进程尚需的各类资源数。如果,则表示进程还需要类资源个,方能完成其任务。并且上述的三个矩阵有如下关系:。2、 银行家算法的实现1进程申请资源的情况设进程的请求向量,如果,表示进程需要类资源数为个。与的关系可能有以下3种情况:.表示该进程的资源需求量已经超过它所宣布

8、的最大值,因此认为出错。=.表示该进程现在对它所需求的全部资源一次申请完成。.表示该进程现在对它所需的资源再进行部分申请,剩余的资源以后可再次申请。 2银行家算法的描述当进程发出资源请求后,系统按一下步骤进行检查: 如果,便转向步骤;否则认为出错,因为它所需求的资源数已超过它宣布的最大值。如果,便转向步骤;否则,表示尚无足够资源,须等待。 假设系统将资源分配给,则需修改下面数据结构中的数值:; 系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给,以完成本次分配;否则,将本次的试探分配作废,恢复原来的资源分配状态,让进程等待。 3安全性算法 设置两个如下的工

9、作向量:.Work,表示系统可提供给进程继续运行所需的各类资源数目,它含有个元素。.Finish,表示系统是否有足够的资源分配给进程,使之完成任务。并令;。 查找这样的进程使其满足:;若找到,执行步骤;否则,执行步骤。 当进程获得资源后,可顺利执行,直至完成任务,并释放出分配给它的资源。此时,令;转向步骤。 如果对所有进程的都满足,则表示系统处于安全状态;否则,系统处于不安全状态。4、银行家算法示例假定系统中有5个进程,和3种资源,其中A资源的数量为17,B资源的数量为5,C资源的数量为20。时刻系统状态如表2-1所示。表2-1 时刻系统状态进程已分配资源数量最大资源需求量仍需求资源数ABCA

10、BCABC21255934740253613440540110062044252213144241101时刻的安全性。利用安全性算法对时刻进行分析,可知存在一个安全序列,故此时系统是安全的。2请求资源。发出请求向量,系统按银行家算法进行检查。;,让的等待。3请求资源。发出请求向量,系统按银行家算法进行检查。;系统先假定可为分配资源,并修改Available、Allocation和Need向量,由此形成的资源变化为:;。再利用安全性算法检查此时系统是否安全。经检查,找到一个安全序列,因此,系统安全,可以将所申请的资源分配给它。4在3的基础上,请求资源,系统按银行家算法进行检查。;系统先假定可为分

11、配资源,并修改Available、Allocation和Need向量,由此形成的资源变化为:;。再利用安全性算法检查此时系统是否安全。此时,已不能满足任何进程的需求,故若实施分配,系统将进入不安全状态,此时系统不分配资源。2.3 死锁的检测与解除1、死锁的检测死锁检测方法对资源的分配不加限制,只要有剩余的资源,就可把资源分配给申请的进程,允许系统有死锁发生,这样可能会造成死锁。关键是当死锁发生时系统能够尽快检测到,并及时解除死锁,使系统恢复正常运行。因此,采用这种方法必须解决3个问题,一是何时检测死锁发生,二是如何判断系统是否出现了死锁,三是当发现死锁发生时如何解除死锁。由于死锁检测算法允许系

12、统发生死锁,因此,最好的情况是一旦死锁产生,就能立即检测到,也就是说死锁发现得越早越好。死锁一般是在资源分配时发生,所以将死锁的检测时机定在有资源请求时是比较合理的,但是采用这种方法检测的次数过于频繁,若没有死锁,将占用CPU非常大的时间开销。另一种方法是周期性检测,即每隔一定时间检测一次,或者根据CPU的使用效率去检测,先为CPU的使用率设定一个低的阀值,每当发现CPU使用率降到该阀值以下时就启动检测程序,以减少由于死锁造成CPU的无谓操作。2、死锁的解除一旦在死锁检测时发现了死锁,就要消除死锁,使系统从死锁状态中恢复过来。一般主要采用两种方法:1撤销法。即撤销已死锁的进程,系统可回收被撤销

13、的进程所占用的资源,并进行分配,以达到解除死锁的目的。撤销涉及死锁的所有进程。这种方法能彻底破坏死锁的循环等待状态,但是,因为有些进程可能已经运行了很长时间,由于被撤销而使得产生的部分结果被删除,再重新执行时还要再次进行计算和运行。一次撤销一个进程。这种方法是每次按照一定的次序撤销一个进程,而选择撤销进程的次序基于最小代价原则。在每次撤销一个进程后,要调用死锁检测算法,以检测是否仍然存在死锁。2 剥夺法,即从一个或几个死锁的进程那里剥夺足够数量的资源,再把释放的资源分配给另一些死锁的进程,以便足以解除死锁。该方法也需要基于最小代价原则选择要剥夺的资源。同样也需要在每次剥夺一个资源后,要调用死锁

14、检测算法,以检测是否仍然存在死锁。关于最小代价,可以考虑一下几个方面:到目前为止消耗的处理机时间最少;到目前为止产生的输出最少;预计剩下的执行时间最长;到目前为止分配的资源总量最少;进程的优先级最低;撤销进程对其他进程的影响最小。总而言之,我们理解死锁产生的原因,尤其是产生死锁的四个必要条件,就可以最大可能地预防、避免、检测和解除死锁。所以当我们在设计系统、调度进程等时,要尽量不让这些条件成立,只要保证一个条件不满足,死锁就不会发生;要确定合理分配资源的算法,避免进程永久占用系统资源。此外,也要避免进程在等待状态的情况下占用资源。因此,我认为对死锁的处理问题上,最重要的就是要处理好资源的分配问

15、题,资源分配合理就可以大大避免了死锁问题。目前也有人认为死锁并非属于程序正确性问题的范畴,而是一种经济上的争执。因此有些计算机部门,为了节省解决死锁问题的耗费,当死锁机会不太多时,宁可冒着死锁的风险。我认为对死锁机会非常少的系统来说,持这种观点是可以理解的。但对于那些复杂的大型计算机系统,特别是实时系统,则绝不应该掉以轻心。系统进程、用户进程的并发运行,互相通讯,以及资源的动态申请等,死锁产生的可能性很大。尤其在实时系统中,飞行器的实时控制,生命支持系统的监督控制等,死锁问题更显得十分严峻。所以我们必须对死锁问题加以重视,以便提高我们的工作效益。三、参考文献1王鸿武,操作系统,XX:国防科技大学出版社,1980年。2郁红英 李春强,计算机操作系统,北京:清华大学出版社,2008年。3范策 许宪成等,计算机操作系统教程核心与设计原理,北京:清华大学出版社,2007年。4王红等,操作系统原理及应用Linux,北京:中国水利水电出版社,2005年。9 / 9

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!