[发明专利]一种基于Petri网MIP法的并发程序死锁检测方法在审
申请号: | 201410394878.8 | 申请日: | 2014-08-08 |
公开(公告)号: | CN104156262A | 公开(公告)日: | 2014-11-19 |
发明(设计)人: | 吴文慧;王寿光 | 申请(专利权)人: | 浙江工商大学 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 无 | 代理人: | 无 |
地址: | 310018 浙江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 petri mip 并发 程序 死锁 检测 方法 | ||
1.一种基于Petri网MIP法的并发程序死锁检测方法,其特征在于,包括以下步骤:
步骤(1)对于待检测的并发程序代码,根据其任务集和资源集,生成控制流图(CFG);
步骤(2)根据生成的控制流图(CFG),创建其Petri网模型;
步骡(3)在已建立的Petri网模型基础上,基于MIP法进行死锁检测分析;
步骤(4)输出检测结果。
2.根据权利要求1所述的一种基于Petri网MIP法的并发程序死锁检测方法,步骤(1)进一步包括以下内容:
步骤(1.1)确定该待检测并发程序代码的任务集和资源集;
步骤(1.2)分析各个任务之间的关系,如哪些为父任务,哪些为子任务,哪些任务之间存在数据相关,资源相关或控制相关;
步骤(1.3)根据步骤(1.2)的分析结果,生成并行任务序列;
步骤(1.4)给出并行任务间的通信;
步骤(1.5)得到原并发程序代码的控制流图(CFG)。
3.根据权利要求1所述的一种基于Petri网MIP法的并发程序死锁检测方法,步骤(2)进一步包括以下内容:
步骤(2.1)确定该并发程序代码中各个任务集的Petri子网结构;
步骤(2.2)构成该并发程序代码的整体静态Petri网结构;
步骤(2.3)确定该并发程序对应Petri网的初始标识。
4.根据权利要求3所述的一种基于Petri网MIP法的并发程序死锁检测方法,步骤(2.1)进一步包括:
步骤(2.1.1)根据步骤(1)得到的控制流图(CFG),提取变迁集{tι}和资源集{rι};
步骤(2.1.2)根据任务序列,确定每个任务集的内部结构,用库所和变迁组成的子网来表示;
所述步骤步骤(2.2)进一步包括:
步骤(2.2.1)根据任务集之间的相关性,确定每个任务集对应的Petri子网之间的通信关系;
步骤(2.2.2)在上述步骤(2.1)得到的子网间添加资源库所,将子网内部的变迁与相应的资源库所相连;
所述步骤步骤(2.3)进一步包括:
步骤(2.3.1)确定该并发程序代码中各任务的对象实例的初始状态;
步骤(2.3.2)将代表所述对象实例的各个托肯放入各自初始状态中。
5.根据权利要求1所述的一种基于Petri网MIP法的并发程序死锁检测方法,步骤(3)进一步包括:
步骤(3.1)根据步骤(2)得到的Petri网模型,提取N=(P,T,F,M0),其中P为所有库所的集合,T为所有变迁的集合,为库所到变迁以及变迁到库所的所有有向弧的集合,M0为该Petri网模型N的初始标识;
步骤(3.2)引入两种指示符,定义为其中S∈P为信标,满足();
步骤(3.3)判断是否满足以下条件:
GMIP(M0)<|P|,其中
且,
vp,zt∈{0,1}
vp≥M(p)/ψ(p),
其中M=M0+[N]·Y,M≥0,Y≥0,ψ(p)=max{M(p)|M0+[N]·Y,M≥0,Y≥0};
步骤(3.4)若根据原并发程序代码建立得到的Petri网模型满足步骤(3.3)中的条件,说明存在可被清空的信标,即原并发程序存在死锁;反之,则说明不存在可被清空的信标,即原并发程序不存在死锁。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江工商大学,未经浙江工商大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410394878.8/1.html,转载请声明来源钻瓜专利网。