[发明专利]避免死锁的资源分配方法及系统有效
申请号: | 201310422363.X | 申请日: | 2013-09-16 |
公开(公告)号: | CN103473137B | 公开(公告)日: | 2017-04-12 |
发明(设计)人: | 孙浩 | 申请(专利权)人: | 东软集团股份有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 北京鸿元知识产权代理有限公司11327 | 代理人: | 陈英俊 |
地址: | 110179 辽*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 避免 死锁 资源 分配 方法 系统 | ||
技术领域
本发明涉及计算机系统技术领域,更为具体地,涉及一种避免死锁的资源分配方法及系统。
背景技术
在计算机系统的使用中,经常出现多个并发进程抢占同一资源的现象。如果进行占用资源的顺序不合理,则有可能出现死锁。为了避免死锁的出现,程序设计者有必要保证各个进程对资源的占用处于一种“安全状态”。安全状态是指系统能按某种顺序,例如按照P1,P2,....Pn这样一个安全序列,为每个进程分配其所需资源,直到最大需求,使每个进程都可顺序完成。若系统不存在一个安全序列,则系统处于不安全状态。
避免死锁所处理的问题就是如何保证在每次分配资源之后,整个系统都能处于安全状态。经典的解决方案是所谓的“银行家算法”,此算法对于每次的资源申请都去做一次模拟运算,即所谓的“安全性检查”,看是否在资源分配后每个进程都能顺利完成。如果可以则接受请求,分配资源;否则拒绝请求。假设在进程数N固定,单一资源的情形下,银行家算法的运行原理主要分为以下4步:
步骤1:正确性判断。如果资源请求量大于现存的剩余资源总量,则直接拒绝分配。
步骤2:假设资源y是可分配的,确定分配后的进程序列。
步骤3:对分配后的进程序列做安全性检查,确保N个进程中的每一个都可以拥有足够的资源顺利完成;
步骤4:将没有通过安全性检查的进程序列恢复至分配前的状态。
作为银行家算法的一个实施例,图1示出了传统的银行家算法的流程。
如图1所示,设x表示现有资源剩余量,共有N个进程,r[i]与a[i]分别表示第i个进程的资源需求量与资源占有量,且r[i]<r[i+1],即各进程按资源需求量从小到大有序排列,bank(i,y)表示为资源需求量第i小的进程分配y个单位的资源,分配成功返回1,拒绝分配返回-1。具体地流程如下所示:
S101:输入进程排序号i与资源申请量y;
S102:判断资源申请量y是否大于剩余总资源量x(即y>x),如果是,进入S103,否则进入S104;
S103:申请失败,return-1;
S104:记录分配后的变量值,即r_j=r[i]-y,a_j=a[i]+y,j=i。
S105:判断j>1且r_j<r[j-1],如果是,进入S106,否则进入S107。
S106:变更进程序列排名,即r[j]=r[j-1],a[j]=a[j-1],--j,然后返回S105重新进行判断。
S107:确定排序为i的进程下降至第j位,即r[j]=r_j,a[j]=a_j。
S108:对分配后的进程序列做安全性检查,即x-=y,s=x。
S109:循环计算第k个进程所获取的资源量,即s+=a[k],++k。
S110:判断系数变量k是否小于等于进程总数N,即k<=N,如果是,进入S111,否则进入S112。
S111:判断r[k]>s,如果是,返回S109,否则进入S112。
S112:判断k>N,如果是,进入S113,否则进入S114。
S113:申请成功,返回return1。
S114:恢复变量至原状态,即x+=y,r_j=r[j],a_j=a[j],k=j。
S115:判断k<i,如果是,进入S116,否则,进入S117。
S116:恢复进程排序r[j]=r[j+1];a[j]=a[j+1],++k,返回S115。
S117:r[i]=r_j+y,a[i]=a_j-y。
S118:申请失败,return-1。
从银行家算法的运行原理,再结合图1所示的流程可以看出,银行家算法在理论上是出色的,但在算法性能上却存在着本质的不足。对于每一次资源申请其都要做一整套的流程判断才能最终得到结论,这一点阻碍了其应用。通过分析可以大致计算出,算法运行一次的运算量在接受申请时约为3(i-j)+N步,拒绝申请时约为5(i-j)+N步。在具体的工程中,实时用户往往要求有更好的响应速度,这一点该算法无法满足用户的需求。
发明内容
鉴于上述问题,本发明的目的是提供一种避免死锁的资源分配方法及系统,以在多个并发进程中实现对资源分配的合理性及实时性。
根据本发明的一个方面,提供一种避免死锁的资源分配方法,包括:
按照进程对资源的需求量从小到大对进程进行排序;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东软集团股份有限公司,未经东软集团股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310422363.X/2.html,转载请声明来源钻瓜专利网。