[发明专利]一种基于块偏序的动态数据竞争检测方法及系统有效
申请号: | 201611034047.5 | 申请日: | 2016-11-18 |
公开(公告)号: | CN106598845B | 公开(公告)日: | 2019-04-12 |
发明(设计)人: | 廖小飞;林敏豪;郑龙;金海 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 华中科技大学专利中心 42201 | 代理人: | 李智 |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于块偏序的动态数据竞争检测方法及系统,其中,方法的实现包括:利用底层虚拟机LLVM的前端对源代码进行编译得到中间代码IR,并利用LLVM的流程PASS对访存操作及同步操作进行插桩;在所述中间代码IR的运行过程中获取插桩后的访存操作及同步操作的物理时间信息,然后压缩简化HB关系;基于压缩后的HB关系进行数据竞争的检测。通过压缩简化事件的HB关系,降低了因大量HB关系而导致的时间与内存的开销。 | ||
搜索关键词: | 一种 基于 块偏序 动态 数据 竞争 检测 方法 系统 | ||
【主权项】:
1.一种基于块偏序的动态数据竞争检测方法,其特征在于,包括:(1)利用底层虚拟机LLVM的前端对源代码进行编译得到中间代码IR,并利用LLVM的流程PASS对访存操作及同步操作进行插桩;(2)在中间代码IR的运行过程中获取插桩后的访存操作及同步操作的物理时间信息,然后根据获取的物理时间信息压缩简化HB关系,其子步骤为:(2‑1)对线程进行集合划分操作,以使在划分后的每个集合U中,满足只包含Join和/或Lock同步操作、只包含Fork和/或Unlock同步操作以及不存在同步操作中的任意一种形式;(2‑2)对同一线程中的不同集合内部的HB关系进行压缩:获取插桩后的访存操作及同步操作的物理时间信息,若对于相邻的两个时间点T1.tn和T1.tn+1之间有T1.Im到T1.Im+k‑1共k个操作,则T1.Im到T1.Im+k‑1之间存在k‑1个HB关系,其中,T1表示线程1,Im表示线程T1中的第m条访存或者同步操作,Im+k‑1表示线程T1中的第m+k‑1条访存或者同步操作,tn表示Im操作的物理时间信息,tn+1表示Im+k‑1操作的物理时间信息,将T1.tn和T1.tn+1之间的k个操作记为T1.Un的操作集合,Un属于线程T1中的集合;(2‑3)对不同线程间的HB关系按照子步骤(2‑1)划分的集合进行压缩:若T1.Im与T2.Ij之间存在HB关系T1.Im<hbT2.Ij以及T1.Im+1与T2.Ij+1之间存在HB关系T1.Im+1<hb T2.Ij+1,采用步骤(2‑2)的处理方式,T1.Im和T1.Im+1属于T1.Un,T2.Ij和T2.Ij+1属于T2.Uj,则将HB关系简化为T1.Un<hb T2.Uj,其中,T2表示线程2,Ij表示线程T2中的第j条访存或者同步操作,Ij+1表示线程T2中的第j+1条访存或者同步操作,Uj属于线程T2中的集合且Ij操作与Ij+1操作属于集合Uj;(3)数据竞争的检测,与步骤(2)同时进行,其子步骤为:(3‑1)对于步骤(2‑3)得到的线程间的HB关系T1.Un<hb T2.Uj,判断该HB关系是否可以忽略,若可以忽略则清除该HB关系,若不可以忽略,则保留该HB关系;(3‑2)对于只包含Join和Lock操作的集合U,记录最后一次进行写操作和读操作的变量名及位置分别加入写操作W集合和读操作R集合,然后依据存在的HB关系判断W集合和R集合中的变量是否与其他线程中的集合对该变量进行写或读操作产生竞争,若存在则确定发生了数据竞争,对于只包含Fork和Unlock操作的集合U,对每一个写操作和读操作均判断是否发生数据竞争,对于不包含任何同步操作的集合U,对每一个写操作和读操作均判断是否发生数据竞争。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201611034047.5/,转载请声明来源钻瓜专利网。
- 上一篇:移动终端及基于移动终端代码缺陷率的计算方法
- 下一篇:应用界面测试方法和装置
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置