一种操作系统的死锁预防方法

文档序号:9579139阅读:233来源:国知局
一种操作系统的死锁预防方法
【技术领域】
[0001]本发明公开一种操作系统的死锁预防方法,属于系统资源配置领域。
【背景技术】
[0002]在计算机操作系统领域,操作系统的死锁现象是一个始终没有被很好的解决的问题。所谓死锁,是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
[0003]为了解决死锁的问题,人们提出了一系列解决方法,其中应用最广的是利用银行家算法进行死锁的解放。银行家算法是把操作系统看做是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配等等。银行家算法,虽然解决了死锁的问题,但是对系统性能的消耗非常大,在进行资源分配之前,需要先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。为实现银行家算法,系统必须设置若干数据结构,非常复杂。本发明提供一种操作系统的死锁预防方法,判断申请的资源是可抢占资源还是不可抢占资源,如果是可抢占资源,则一定不会引发死锁,对于不可抢占资源,检查阻塞队列是否为空,规定只有当阻塞队列中已经有进程时才让其他进程执行在申请资源前先释放资源的操作,以预防死锁现象的发生,与现有死锁预防方法相比,不仅能预防操作系统死锁产生,对操作系统的运行效率影响小,而且操作简单。

【发明内容】

[0004]本发明针对现有技术中预防操作系统死锁时,对系统性能的消耗非常大,系统内部运算较复杂的问题,提供一种操作系统的死锁预防方法,与现有死锁预防方法相比,不仅能预防操作系统死锁产生,对操作系统的运行效率影响小,而且操作简单。
[0005]本发明提出的具体方案是:
一种操作系统的死锁预防方法:
系统进程申请资源,判断申请的资源是否为可抢占资源,若否检查阻塞队列是否为空,阻塞队列为空,则判断系统剩余资源是否大于申请资源,大于则申请成功,否则该进程进入阻塞队列为阻塞状态;阻塞队列非空,则被阻塞进程释放占用的不可抢占资源,进程一次性申请在之前释放的资源与所需的新的资源,申请成功,则得到所需的全部系统资源,否则该进程唤醒阻塞队列中的第一个进程,该进程进入阻塞队列为阻塞状态,等待下次操作。
[0006]进程进入阻塞队列为阻塞状态,系统根据进程需要不可抢占资源的多少,排列进程在阻塞队列中的位置。
[0007]系统进程申请资源,判断申请的资源是否为可抢占资源,若为可抢占资源,则直接申请,进程运行至结束后唤醒阻塞队列中的第一个进程。
[0008]本发明的有益之处是:
本发明方法对系统进程申请资源,判断申请的资源是可抢占资源还是不可抢占资源,如果是可抢占资源,则允许进程直接申请资源,对于不可抢占资源,需要检查阻塞队列是否为空,为了不影响系统的运行效率,规定只有当阻塞队列中已经有进程时才让其他进程执行在申请资源前先释放资源的操作,在阻塞队列无进程的情况下,直接判断系统剩余资源数是否满足申请的资源数量;本发明与其他传统死锁预防方法相比,不仅能预防操作系统死锁产生,对操作系统的运行效率影响较小,系统操作简单。
【附图说明】
[0009]图1本发明方法工作流程示意图。
【具体实施方式】
[0010]一种操作系统的死锁预防方法:
系统进程申请资源,判断申请的资源是否为可抢占资源,若否检查阻塞队列是否为空,阻塞队列为空,则判断系统剩余资源是否大于申请资源,大于则申请成功,否则该进程进入阻塞队列为阻塞状态;阻塞队列非空,则被阻塞进程释放占用的不可抢占资源,进程一次性申请在之前释放的资源与所需的新的资源,申请成功,则得到所需的全部系统资源,否则该进程唤醒阻塞队列中的第一个进程,该进程进入阻塞队列为阻塞状态,等待下次操作。
[0011]根据上述方法及
【发明内容】
,结合附图,具体阐述预防操作系统进程发生死锁的方法:
对于系统中的每一个进程,执行如下操作:
进程在运行过程中,发现还要申请其他的资源(a),
则进程判断该资源属于可抢占资源还是不可抢占资源(b),
如果是可抢占资源,则直接申请(c)。
[0012]如果是不可抢占资源,则检查当前阻塞队列是否为空(d),
如果为空,则说明当前系统中没有被阻塞的进程,
若系统中剩余的资源数大于进程申请的资源数(e),则申请资源成功(f)。
[0013]若系统中剩余的资源数小于进程申请的资源数,则资源申请失败,该进程进入阻塞状态(g)。系统根据进程需要不可抢占资源的多少,排列进程在阻塞队列中的位置;
如果阻塞队列非空,说明当前系统中存在被阻塞的进程,则进程释放已经占有的全部不可抢占资源(h),进程一次性申请在之前释放的资源与所需的新的资源(i),
若资源申请成功,则得到所需的全部系统资源,进程继续运行(j),资源申请成功的进程运行结束后释放占有的所有资源并唤醒在阻塞队列中的第一个进程(m)。
[0014]否则申请资源失败,此时该进程需要唤醒阻塞队列中的第一个进程(k),然后系统根据该进程需要不可抢占资源的多少,排列进程在阻塞队列中的位置,比如该进程占用不可抢占资源较多,将其排列在阻塞队列的尾部并转化为阻塞状态(1)。
[0015]基于上述方法,本发明首先判断申请的资源是可抢占资源还是不可抢占资源。如果是可抢占资源,则允许进程直接申请资源,对于不可抢占资源,需要检查阻塞队列是否为空,为了不影响系统的运行效率,规定只有当阻塞队列中已经有进程时才让其他进程执行在申请资源前先释放资源的操作。在阻塞队列无进程的情况下,直接判断系统剩余资源数是否满足申请的资源数量。不仅能预防操作系统死锁产生,对操作系统的运行效率影响较小。
【主权项】
1.一种操作系统的死锁预防方法,其特征是 系统进程申请资源,判断申请的资源是否为可抢占资源,若否检查阻塞队列是否为空,阻塞队列为空,则判断系统剩余资源是否大于申请资源,大于则申请成功,否则该进程进入阻塞队列为阻塞状态;阻塞队列非空,则被阻塞进程释放占用的不可抢占资源,进程一次性申请在之前释放的资源与所需的新的资源,申请成功,则得到所需的全部系统资源,否则该进程唤醒阻塞队列中的第一个进程,该进程进入阻塞队列为阻塞状态,等待下次操作。2.根据权利要求1所述的一种操作系统的死锁预防方法,其特征是进程进入阻塞队列为阻塞状态,系统根据进程需要不可抢占资源的多少,排列进程在阻塞队列中的位置。3.根据权利要求1或2所述的一种操作系统的死锁预防方法,其特征是系统进程申请资源,判断申请的资源是否为可抢占资源,若为可抢占资源,则直接申请,进程运行至结束后唤醒阻塞队列中的第一个进程。
【专利摘要】本发明公开一种操作系统的死锁预防方法,属于系统资源配置领域;系统进程申请资源,判断申请的资源是可抢占资源还是不可抢占资源,如果是可抢占资源,则允许进程直接申请资源,对于不可抢占资源,需要检查阻塞队列是否为空,为了不影响系统的运行效率,规定只有当阻塞队列中已经有进程时才让其他进程执行在申请资源前先释放资源的操作,在阻塞队列无进程的情况下,直接判断系统剩余资源数是否满足申请的资源数量;本发明与其他传统死锁预防方法相比,不仅能预防操作系统死锁产生,对操作系统的运行效率影响较小,系统操作简单。
【IPC分类】G06F9/48, G06F9/52
【公开号】CN105335237
【申请号】CN201510758180
【发明人】张旭芳
【申请人】浪潮电子信息产业股份有限公司
【公开日】2016年2月17日
【申请日】2015年11月9日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1