[发明专利]一种面向死锁检测的无界Petri网展开方法在审

专利信息
申请号: 201810640019.0 申请日: 2018-06-21
公开(公告)号: CN109062704A 公开(公告)日: 2018-12-21
发明(设计)人: 鲁法明;陶冉冉;包云霞;张雪萍 申请(专利权)人: 山东科技大学
主分类号: G06F9/52 分类号: G06F9/52
代理公司: 青岛智地领创专利代理有限公司 37252 代理人: 种艳丽
地址: 266590 山东省青岛*** 国省代码: 山东;37
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 死锁检测 死锁 计算机技术领域 状态爆炸问题 变迁序列 检测 带环 并发 缓解 配置 进程 保证
【权利要求书】:

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里选择ω-扩展<t,Bt>,并依据ω-扩展向新展开中添加事件e和流关系<b,e>,并且满足

式中,F'为流关系集合,初始情况下为空集;

针对t·中的每一个库所p,向新展开中添加对应的普通条件b和流关系<e,b>,并且满足

步骤3.2:向新展开中添加ω+条件或ω-条件;具体包括如下步骤:

步骤3.2.1:针对Bt中的每一个ω+条件向新展开中添加新的ω+条件和流关系满足:

步骤3.2.2:判断{t|t is enabled at Mark([e])}是否等于{t|t is enabled atMarkω([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 atMarkω([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/pat/books/201810640019.0/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top