基于资源等待图的死锁检测算法.docx
《基于资源等待图的死锁检测算法.docx》由会员分享,可在线阅读,更多相关《基于资源等待图的死锁检测算法.docx(8页珍藏版)》请在冰豆网上搜索。
基于资源等待图的死锁检测算法
基于资源等待图的死锁检测算法
党荣;陈斌
【摘要】死锁是操作系统、数据库系统以及通信网络中经常出现的现象.分析了使用资源分配图和进程等待图完成死锁检测的不足,提出了资源等待图的概念,并给出了基于资源等待图进行死锁检测的方法,该算法能够完成当资源类含有多个实例时的死锁检测.
【期刊名称】《计算机应用与软件》
【年(卷),期】2007(024)006
【总页数】3页(P149-151)
【关键词】资源分配图;进程等待图;资源等待图;死锁检测
【作者】党荣;陈斌
【作者单位】渭南师范学院财务处,陕西,渭南,714000;渭南师范学院数学系,陕西,渭南,714000
【正文语种】中文
【中图分类】工业技术
第24卷第6期2007年6月计算机应用与软件ComputerApplicationsandSoftwareVol.24No.6Jun.2007基于资源等待图的死锁检测算法党荣l陈斌2I(渭南师范学院财务处陕西渭南714000)2(渭南师范学院数学系陕西渭南714000)摘要死锁是操作系统、数据库系统以及通信网络中经常出现的现象。
分析了使用资源分配图和进程等待图完成死锁检测的不足,提出了资源等待图的概念,并给出了基于资源等待图进行死锁检测的方法,该算法能够完成当资源类含有多个实例时的死锁检测。
关键词资源分配图进程等待图资源等待图死锁检测ADEADLOCKDETECTIONALGORITHMBASEDONRESOUCEWAITINGGRAPHDangRong1ChenBin21(DepαrtmentofFina时ial,WeinαnTeachersCollege,Weinan714000,Shannxi,Chinα)z(D电partmentofMαth,WeinanTeαchersCollegeWeinan714000,Shannxi,China)AbstractConsideringthedeficiencyofresourceallocationgraphandprocesswaitinggraphindeadlockdetection,resourcew副tinggraphispresented.Basedonit,anewalgorithmofdeadlockdetectingisproposed,whichcanworkwellwhenthereareseveralentitiesineachre-source.KeywordsResourceallocationgraphProcesswaitinggraphResourcewaitinggraphDeadlockdetectionO51士一同在操作系统、数据库系统以及网络通信中,由于进程并发和资源共享,当系统中资源分配顺序或者进程推进顺序不当时就会造成系统死锁。
处于死锁状态的系统中,进程之间互相等待资源而永远不能继续向前推进,严重地影响了系统的可靠性。
死锁的检测就是指系统保存有关资源请求和分配的信息,并提供一种死锁检测算法,根据这些信息来检测系统是在已经进入死锁状态,然后采取必要的死锁恢复措施终止死锁进程序列,直到系统中有足够的资源来完成其余的进程。
目前大多数死锁检测算法,是通过检查资源分配图中是否存在有向环路来确定的,这种算法只能检测单实例资源、类系统的死锁,如果系统中资源类包含多个实例,使用进程等待图就无法确定系统中是否存在死锁。
1基于进程等待图的死锁检测进程的死锁问题可以用有向图更加准确地描述,这种有向图称为资源分配图。
一个资源分配图G=(V,曰:
V=[p=jP1,P2,"',PnILR=Ir1,r2,..·,rE=j(p;,r),(与,p;)IP;EP,与ERi其中V是顶点的集合,它包含两部分:
一是系统中所有进程的集合P,二是系统中所有资源类的集合R。
E是所有有序对(p;'r)或屿,p;)的集合。
若(p;,与)EE,则表示从进程P;到资源类与有一条有向边,意指进程Pι请求分配资源、巧的一个实例。
若(巧,P;)εE,则表示从资源、类η到进程P;有一条有向边,意指资源、类巧的一个实例已经分配给了进程P;。
因此,(p;,rj)又称为请求边,(巧,卢J又称为分配边。
请求边一旦满足就变成了分配边;当进程释放了它占有的资源,分配边就从资源分配图中去掉了(4)。
在资源、分配图中,进程用圆表示,资源、类用椭圆表示。
椭圆中的实心黑点表示该资源类的实例。
图1是资源分配图的例子。
r1r2Pi/4rs图l资源分配图结论1对于给定的资源分配图G,若G中不含环路,则表明系统禾发生死锁;反之,若G中含有环路,则表明系统可能存在死锁。
若系统中的每一资源类仅有一个实例,则G中的环路表明系统已经发生了死锁。
从资源分配图中去掉表示资源类的椭圆并合并相关的有向边即可得到对应的进程等待图。
进程等待图中从P;到Pi的有收稿日期:
2006-04-11。
党荣,学士,主研领域:
计算机软件与理论研究,财务管理中的计算机应用及安全问题研究。
第24卷第6期2007年月计算机应用与软件ComputerApplicationsandSoftwareVol.24No.6Jun.2007摘要死锁是操作系统、数据库系统以及通信网络中经常出现的现象。
分析了使用资源分配图和进程等待图完成死锁检测的检测。
关键词资源分配图进程等待图资源等待图死锁检测ADEADLOCKDETECTIONALGORITHMBASEDONRESOUCEWAITINGGRAPHDangRong1ChenBin2DepαrtmentofFina时ial,WeinαnTeachersCollege,Weinan714000,Shannxi,Chinα)z(D电partmentofMαth,WeinanTeαchersCollegeWeinan714000,Shannxi,China)Consideringthedeficiencyofresourceallocationgraphandprocesswaitinggraphindeadlockdetection,resourcew副tinggraphpresented.Basedonit,anewalgorithmofdeadlockdetectingisproposed,whichcanworkwellwhenthereareseveralentitiesineachre-source.KeywordsResourceallocationgraphProcesswaitinggraphResourcewaitinggraphDeadlockdetectionO51士一同在操作系统、数据库系统以及网络通信中,由于进程并发和资源共享,当系统中资源分配顺序或者进程推进顺序不当时就会造成系统死锁。
处于死锁状态的系统中,进程之间互相等待资源而永远不能继续向前推进,严重地影响了系统的可靠性。
死锁的检测就是指系统保存有关资源请求和分配的信息,并提供一种死锁检测算法,根据这些信息来检测系统是在已经进入死锁状态,然后采取必要的死锁恢复措施终止死锁进程序列,直到系统中有足够的资源来完成其余的进程。
目前大多数死锁检测算法,是通过检查资源分配图中是否存在有向环路来确定的,这种算法只能检测单实例资源、类系统的死锁,如果系统中资源类包含多个实例,使用进程等待图就无法确定系统中是否存在死锁。
进程的死锁问题可以用有向图更加准确地描述,这种有向图称为资源分配图。
一个资源分配图G=(V,曰:
V=[p=jP1,P2,"',PnIR=Ir1,r2,..·,rE=j(p;,r),(与,p;)IP;EP,与ERi其中V是顶点的集合,它包含两部分:
一是系统中所有进程的集合P,二是系统中所有资源类的集合R。
E是所有有序对(p;'r)(巧,P;)εE则表示从资源、类η到进程P;有一条有向边,意指资源、类巧的一个实例已经分配给了进程P;。
因此,(p;,rj)又称为请求边,(巧,卢J又称为分配边。
请求边一旦满足就变成了分配边在资源、分配图中,进程用圆表示,资源、类用椭圆表示。
椭圆中的实心黑点表示该资源类的实例。
图1是资源分配图的例子。
r2Pi/4图l资源分配图结论1明系统禾发生死锁;反之,若G中含有环路,则表明系统可能存在死锁。
若系统中的每一资源类仅有一个实例,则G中的环路表明系统已经发生了死锁。
从资源分配图中去掉表示资源类的椭圆并合并相关的有向边即可得到对应的进程等待图。
进程等待图中从P;到Pi的有收稿日期:
2006-04-11。
党荣,学士,主研领域:
计算机软件与理论研究,财务管理中的计算机应用及安全问题研究。
1502007年向边(p,而)表示:
P,等待P;释放它所需要的资源。
而有向边(p,,pj)在进程等待图中存在,当且仅当对应的资源分配图中,对某个资源类rk存在两条边:
(p,,rk)和(rk冉)。
与图l中资源分配图对应的进程等待图如图2所示。
飞仑仑二之主PtP2P3图2进程等待图结论2若系统中的每一资源类仅含一个实例,则系统发生死锁的必要条件是进程等待图中存在环路。
从结论l和结论2都可以看出,资源分配图和进程等待图都只有当每一资源类仅含一个实例时才能有效地检测死锁的发生。
当每一资源类不止一个实例时,进程等待图就无能为力了。
进程等待图表示了进程之间的等待关系,对于资源类的实例个数没有说明,但是受进程等待图的启发,本文提出了资源等待图的概念。
2资源等待图从资源分配图中去掉表示进程类的圆并合并相关的有向边即可得到相应的资源等待图。
与图1中资源分配图对应的资源等待图如图3所示。
I3r•、、,、,平r1r,,!
η,_..叫·〉--··吨·←--叫··护-飞图3资源等待图资源等待图中从r,到。
的有向边(r,,与)表示:
存在某个进程Pk已经申请到了资源类r,的一个实例,并正在申请资源类巳的一个实例。
而有向边(r,巧)在资源等待图中存在,当且仅当对应的资源分配图中,对某个进程Pk存在两条边:
(巧,Pk)和(pk,r)。
从资源等待图可以看出,资源等待图与进程等待图相比较最大的特点就是它可以表示每一资源类的实例个数,进而当资源类有多个实例时能够容易地进行死锁检测。
定义资源等待图后,给出和资源等待图相关的几个概念:
定义1资源等待图中指向资源节点的有向边的条数,称为资源节点的节点入度。
定义2资源、等待图中从资源节点出发的有向边的条数,称为资源节点的节点出度。
定义3资源、等待图中不属于任何一个环路的边和节点,称为非环路分枝。
定义4资源等待图中删除非环路分支后的资源等待图,称为精简资源等待图。
例如在图3中,节点r1和r4的进度和出度都为1,资源类r1和资源类r2的资源实例数为l,资源类r4的资源实例数为2。
删除图3中的虚线分校后得到的资源等待图即为精简资源等待图。
之所以要删除非环路分校的