[发明专利]一种面向死锁检测的无界Petri网展开方法在审
申请号: | 201810640019.0 | 申请日: | 2018-06-21 |
公开(公告)号: | CN109062704A | 公开(公告)日: | 2018-12-21 |
发明(设计)人: | 鲁法明;陶冉冉;包云霞;张雪萍 | 申请(专利权)人: | 山东科技大学 |
主分类号: | G06F9/52 | 分类号: | G06F9/52 |
代理公司: | 青岛智地领创专利代理有限公司 37252 | 代理人: | 种艳丽 |
地址: | 266590 山东省青岛*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种面向死锁检测的无界Petri网展开方法,属于计算机技术领域。本发明针对无界Petri网领域并且保证新的展开方法检测到的死锁全部真实存在;本发明中所得展开中每一个配置对应的带环或无环的变迁序列均可从初始标识引发;本发明在不存在ω‑条件的情形下可以对网系统的死锁作出完整、准确的检测;本发明的规模比复可达树小,能够缓解Petri网中由并发进程导致的状态爆炸问题。 | ||
搜索关键词: | 死锁检测 死锁 计算机技术领域 状态爆炸问题 变迁序列 检测 带环 并发 缓解 配置 进程 保证 | ||
【主权项】:
1.一种面向死锁检测的无界Petri网展开方法,其特征在于:首先进行如下定义:输入为无界原型Petri网∑=(P,T;F,M0),输出为网展开
Petri网∑由库所集,变迁集和流关系集以及初始标识确定;
为采用新展开技术构造的出现网,条件集B包括三类条件,分别为普通条件,ω+条件和ω‑条件,E为事件集,F'是条件与事件之间的流关系集,h为
中结点的标记函数,反映Petri网中的结点与
中的结点之间的映射关系;γ代表如下的映射关系:如果b为普通条件,则γ(b)=1;如果b为ω+条件,γ(b)=ω;如果b为ω‑条件,
假设
代表任意变迁t属于变迁集合T,t的前集非空,则对于满足
的变迁t,只需要添加一个新库所p和两个流关系(p,t),(t,p),就能使得新Petri网与原Petri网的行为一致;所述的面向死锁检测的无界Petri网展开方法,具体包括如下步骤:步骤1:根据Petri网中初始标识M0的非零分量,向新展开中添加初始条件,对应关系如下:h(bi_j)=pi∧γ(bi_j)=1 (1);其中,pi为初始标识M0的非零分量对应的库所,i∈N,N为总库所数,j∈{1,2,...,L},L对应库所pi中的令牌数,bi_j为添加到条件集B中的一个普通条件;步骤2:计算新展开中由各并发极大条件子集及其可使能的变迁构成的候选ω‑扩展集合PE,每个ω‑扩展<t,Bt>由一个变迁t和一个条件子集Bt构成,其中Bt为条件集B的子集,包含普通条件集
和ω+、ω‑条件集
两个子集,Bt为最大条件子集,满足
其中,第一行表示Bt中的条件相互并发同时隐含Bt中的条件之间无冲突并且他们对应的库所都来自于t的前集;第二行表示Bt的前集不包含ω‑割断事件并且没有冗余的ω‑扩展;第三行代表在t的前集和
中的普通条件之间存在一一对应关系;第四行表示
中的全部ω+、ω‑条件均产生于e的祖先事件,e为按照ω‑扩展<t,Bt>将要添加的事件,这一要求能够在忽略ω+和ω‑条件的情况下保持事件的因果关系不变;判断ω‑扩展集合PE是否为空;若ω‑扩展集合PE为空,则结束;若ω‑扩展集合PE不为空;则执行步骤3;步骤3:从ω‑扩展集合PE中选择一个ω‑扩展,并向新展开中添加事件e及其后继条件及流关系;具体步骤如下:步骤3.1:从ω‑扩展集合PE里选择ω‑扩展,并依据ω‑扩展向新展开中添加事件e和流关系,并且满足
式中,F'为流关系集合,初始情况下为空集;针对t·中的每一个库所p,向新展开中添加对应的普通条件b和流关系,并且满足
步骤3.2:向新展开中添加ω+条件或ω‑条件;具体包括如下步骤:步骤3.2.1:针对Bt中的每一个ω+条件
向新展开中添加新的ω+条件
和流关系
满足:
步骤3.2.2:判断{t|t is enabled at Mark([e])}是否等于{t|t is enabled at Markω([e])};若:判断结果是{t|t is enabled at Mark([e])}≠{t|t is enabled at Markω([e])},则执行步骤3.2.3;或判断结果是{t|t is enabled at Mark([e])}={t|t is enabled at Markω([e])},则执行步骤3.2.4;步骤3.2.3:对P中满足Markω([e])|p=ω的每一个库所p,增加后继ω‑条件
和流关系
满足:
式中,{t|t is enabled at Mark([e])}表示在常量标识Mark([e])下能够被引发的变迁的集合,{t|t is enabled at Mark([e])}≠{t|t is enabled at Markω([e])}表示Mark([e])与Markω([e])的使能性不一致;然后删除e·中的全部ω+条件,其中,e·={b∈B|(e,b)∈F'}为e的后集;步骤3.2.4:判断在[e]中是否存在事件e'使得Mark([e'])<Mark([e])∧Markω([e'])<Markω([e]);若:判断结果是在[e]中存在事件e'使得Mark([e'])<Mark([e])∧Markω([e'])<Markω([e]);则执行步骤3.2.5;或判断结果是在[e]中不存在事件e'使得Mark([e'])<Mark([e])∧Markω([e'])<Markω([e]);则执行步骤3.2.8;步骤3.2.5:对满足|(Mark([e'])|p<Mark([e])|p)∧(Markω([e'])|p<Markω([e])|p)∧(Markω([e])|p≠ω)的每一个库所p,增加后继ω+条件
和流关系
满足:
步骤3.2.6:判断{t|t is enabled at Mark([e])}是否等于{t|t is enabled at Markω([e])};若:判断结果是{t|t is enabled at Mark([e])}≠{t|t is enabled at Markω([e])},则执行步骤3.2.7;步骤3.2.7:删除步骤3.2.5中新添加的全部ω+条件;步骤3.2.8:根据ω‑割断事件的定义判断新加的事件e是否为ω‑割断事件;若:判断结果是e为ω‑割断事件,则执行步骤4;或判断结果是e不为ω‑割断事件,则执行步骤5;步骤4:将e添加到ω‑割断事件集合中,并且将不会在ω‑割断事件的基础上继续计算新的ω‑扩展;ω‑割断事件定义如下:对一个事件e,存在另一个事件e'满足(Mark([e])≥Mark([e']))1∧(Markω([e])=Markω([e']))2∧(e'∈[e])∧(e'≠e)3 (8);其中,e为ω‑割断事件,e'为e的割断源事件,在ω‑割断事件与其割断源事件之间对应的变迁序列可重复引发;式(8)中,1中不等式表示e的常量标识大于或者等于e'的常量标识;2中不等式表示e的非常量标识等于e'的非常量标识;3中不等式表示e'是e的前驱事件并且e'不等于e;其中,[e]={e'|(e',e)∈F*}叫做事件e的局部配置,Mark([e])为在没有考虑ω+条件和ω‑条件的情况下执行完[e]中的全部事件后产生的常量标识,Markω([e])为在考虑ω+条件和ω‑条件的情况下执行完[e]中的全部事件并且按照如下的计算规则产生的非常量标识,也叫做ω‑标识,计算规则如下:
Mark([e])与Markω([e])共同构成了二元标识
步骤5:重复执行步骤2‑步骤4,直到ω‑扩展集PE为空。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东科技大学,未经山东科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201810640019.0/,转载请声明来源钻瓜专利网。