[发明专利]一种并发分析的方法及装置有效
申请号: | 201310262639.2 | 申请日: | 2013-06-27 |
公开(公告)号: | CN104252346B | 公开(公告)日: | 2017-08-29 |
发明(设计)人: | 陈聪明;霍玮;李丰;冯晓兵 | 申请(专利权)人: | 华为技术有限公司;中国科学院计算技术研究所 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F17/30 |
代理公司: | 北京中博世达专利商标代理有限公司11274 | 代理人: | 申健 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 并发 分析 方法 装置 | ||
技术领域
本发明涉及程序分析技术领域,尤其涉及一种并发分析的方法及装置。
背景技术
可能并发分析用于判断给定的一个并发程序中的两条语句是否可能在运行时并发执行,其结果可以服务于其他类型的程序分析技术例如指针分析,也可服务于并发程序的编译优化,同时还可以服务于并发错误的检测,比如说,如果预先知晓一个并发程序中的哪些部分之间是可能并发的,则可以显著减少数据竞争这类错误的误报信息。所以说可能并发分析是并发程序分析领域中一类重要的程序分析方法。
现有技术基于迭代数据流的方法进行可能并发分析,在该分析方法中,根据不同语句的并发语义为其定义相应的数据流方程,之后在迭代过程中计算得到所有语句的可能并发集合。具体的,该方法首先需要构造并发程序的控制流图,之后根据控制流图构造并发执行图(Parallel Execution Graph,PEG),该并发执行图为控制流图的程序表示。在PEG上标注含有不同并发语义的节点。并发语义包括线程创建,线程注销以及线程间通信等等,其中,线程创建的并发语义代表新的可能并发信息的产生,线程注销的并发语义代表消除已有的可能并发信息,线程间通信的并发语义代表线程间时序关系的存在。不同的并发语义可定义不同的数据流方程。由于PEG基于并发控制流图构建,因此最终的分析结构就转换为求解PEG上分属不同线程的不同节点之间是否并发。在迭代过程中,以工作集的方式保存PEG节点信息,每次迭代处理工作集中的一个节点,按照预先定义的数据流方程计算可能并发信息时会有新的节点加入。重复此过程,直到工作集为空,得到最终的分析结果。
在实现上述现有技术的过程中,发明人发现至少存在如下问题:在分析PEG上不同节点之间是否并发的过程中,处理过程繁琐,从而导致并发分析的效率低。
发明内容
本发明的实施例提供一种并发分析的方法及装置,在对PEG上不同节点间进行并发分析的过程中,简化处理了过程,解决了并发分析效率低的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供了一种并发分析的方法,包括:
获取由并发执行图PEG中的节点组成的待处理序列,所述待处理序列为减少所述节点重复次数的严格拓扑序列;
根据预设规则对所述待处理序列中的节点进行遍历,所述预设规则用于寻找待遍历的节点。
在第一方面的第一种可能实现方式中,所述获取待处理序列包括:
获取所述PEG的根节点,并将所述根节点压入预设栈中,所述预设栈用于存储所述PEG中的根节点和/或所述PEG中入度为0的节点;
获取所述预设栈的栈顶节点,将所述栈顶节点加入所述待处理序列;
获取所述栈顶节点的后继节点,并在所述PEG中删除所述栈顶节点与所述后继节点组成的边。
结合第一方面、第一方面的第一种可能实现方式,在第一方面的第二中可能实现方式中,获取所述栈顶节点的后继节点,具体包括:
当确定所述栈顶节点为线程创建点时,获取并删除所述栈顶节点先创建的线程的首节点与所述栈顶节点组成的边,并将所述首节点压入所述预设栈;
当确定所述栈顶节点不是线程创建点时,获取并删除所述栈顶节点的所有后继节点与所述栈顶节点组成的边,并将所述后继节点中入度为0的所述后继节点压入所述预设栈中。
结合第一方面或第一方面的第一种可能实现方式或第一方面的第二种可能实现方式中任意一种实现方式,在第一方面的第三种可能实现方式中,还包括:
为所述PEG中的线程设置并行层次,所述并行层次表示所述PEG中线程之间的关系。
结合第一方面、第一方面的第一种可能实现方式、第一方面的第二种可能实现方式、第一放方面的第三种可能实现方式,在第一方面的第四种可能实现方式中,还包括:
确定当前遍历的节点在所述待处理序列中的第一位置;
在所述待处理序列中,且在所述第一位置之后,查找包含于工作集中的节点;
当查找到包含于所述工作集中的节点时,确定所述工作集中的节点在所述待处理序列中的位置为第二位置;
当未查找到包含于所述工作集中的节点时,从所述待处理序列中的第一个节点开始向后查找。
第二方面,提供了一种并发分析的装置,包括:
获取单元,用于由获取PEG中节点组成的待处理序列,所述待处理序列为减少所述节点重复次数的严格拓扑序列;
遍历单元,用于根据预设规则对所述获取单元获取到的所述待处理序列中的节点进行遍历,所述预设规则用于寻找待遍历的节点。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司;中国科学院计算技术研究所,未经华为技术有限公司;中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310262639.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种倒角机床去毛刺机构及去毛刺方法
- 下一篇:一种有色金属溶液加热棒