[发明专利]一种基于序列模式挖掘的并发程序剖析方法有效
申请号: | 201711344458.9 | 申请日: | 2017-12-14 |
公开(公告)号: | CN108182144B | 公开(公告)日: | 2020-12-11 |
发明(设计)人: | 王璐璐;李必信;周颖;廖力;孔祥龙 | 申请(专利权)人: | 东南大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 柏尚春 |
地址: | 210096 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于序列模式挖掘的并发程序剖析方法,通过对并发程序的源代码进行分析,获取其中的线程信息以及线程之前的依赖关系,以插桩的方式来捕获程序运行过程中所执行的依赖关系序列,最后通过基于序列模式挖掘的方法获知所执行的并发程序中父子线程交互的剖析结果。 | ||
搜索关键词: | 一种 基于 序列 模式 挖掘 并发 程序 剖析 方法 | ||
【主权项】:
1.一种基于序列模式挖掘的并发程序剖析方法,其特征在于,该方法包括如下步骤:步骤1)通过并发程序源码的静态分析方法,获得并发程序中存在的所有线程信息集合Sthread={Tx},所有线程位置集合Slocation={Ly},以及线程之间各种类型的依赖关系集合Sdependence={},所述所有线程信息集合Sthread={Tx}包括Ta,Tb两个线程,La是Ta的一个代码位置,Lb是Tb的一个代码位置,Type是从La指向Lb的依赖关系类型;步骤2)按照所述步骤1中所得信息进行代码插桩,并通过执行插桩后的并发程序来获取依赖轨迹,具体方法为:a)分别在Ta的代码位置La和Tb的代码位置Lb插入监控执行的桩代码,在插桩后的程序执行中记录其执行轨迹{Trace(n)=n},其中n为执行轨迹中各个元素的序号;b)如果执行轨迹中La与Lb的执行次序与依赖关系相符合,则认为线程依赖关系存在于当前执行之中,并将其加入依赖轨迹{DepTrace(n)=n}之中;若不符合则相应的线程依赖关系没有在执行轨迹中出现,不做处理;其中Li和Lj为每个依赖关系中包含的两个代码位置;步骤3)从所述依赖轨迹{DepTrace(n)=<Type,Li,Lj>n}挖掘长度为e、编号为m的线程依赖关系的执行序列模式
并计算
的支持度,具体方法为:a)计算依赖轨迹中每个执行序列模式
的支持度
首先得到e为1时的支持度集合![]()
为长度为1、编号为m的线程依赖关系的执行序列模式,
为
的支持度;b)按照给定的阈值SUP进行剪枝,筛选出支持度不小于阈值的元素,得到元素集合如下所示:
c)将筛选出的元素进行连接,获得更长的序列,并按照如下公式计算新序列的支持度:
其中,
表示长度为2、编号为m的执行序列模式,该执行序列模式由DepTrace(n1)、DepTrace(n2)顺序组成,n1和n2分别是步骤b)中所得集合中任意两个线程依赖关系的编号,
为
的支持度;d)重复上述剪枝、计算支持度、以及连接的过程,直至没有新的连接能够满足阈值条件为止,获得线程依赖关系的执行序列模式如下:
其中,ne为执行序列模式
中最后一个线程依赖关系的编号;步骤4)将所述步骤3)挖掘到的线程依赖关系的执行序列模式加入剖析结果Profile,得到执行频率满足阈值要求的所有执行序列模式,所述剖析结果Profile是一个集合,其中的元素为
以及
的频率组成的二元组。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201711344458.9/,转载请声明来源钻瓜专利网。