[发明专利]一种自适应轻量级动态混合数据竞争检测方法有效

专利信息
申请号: 202110659412.6 申请日: 2021-06-15
公开(公告)号: CN113407447B 公开(公告)日: 2022-09-27
发明(设计)人: 孙家泽;杨彦漫;舒新峰 申请(专利权)人: 西安邮电大学
主分类号: G06F11/36 分类号: G06F11/36
代理公司: 暂无信息 代理人: 暂无信息
地址: 710061 *** 国省代码: 陕西;61
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 自适应 轻量级 动态 混合 数据 竞争 检测 方法
【权利要求书】:

1.一种自适应轻量级动态混合数据竞争检测方法,其特征在于包括以下步骤:

步骤一:针对一个Java并发程序P,在不影响P动态执行过程中,动态数据竞争检测器为每个共享变量x分别维护两个长度为Q_LEN=6的读队列RCx和写队列WCx,RCx和WCx均采用先入先出原则以缓存机制存储各线程对x的读访问信息和写访问信息,访问信息以epoch,LockSet形式存放,用来表示线程t的线程编号、访问时间戳和当前线程所持有的锁集合,其中epoch表示为t@c,意为线程t的当前时间戳为c;

步骤二:当线程t对x进行访问,判断当前是否为读访问,如果不为读访问则进入步骤五;否则首先判断当前x是否已经处于读共享状态,如果是读共享状态则更新读向量时钟Rx为线程t的时钟向量VCt;否则去判断t当前读访问与RCx最后一个元素存放的读访问是否构成并发访问状态,如果是则动态数据竞争检测器自动切换为读向量时钟Rx来记录读访问历史,进入步骤三;

步骤三:遍历并分析WCx中线程u对x的历史访问信息直到最后一个元素,即如果WCx[u]中线程u的时间戳与当前线程t的时间戳VCt[u]不满足Happens-before关系,且t目前获得的锁集与WCx[u].LockSet交集为空集,则报告写-读类型数据竞争错误,进入步骤四;

步骤四:判断RCx最后一个元素的epoch值与t的epoch值是否相等,如果相等则更新最后一个元素的LockSet集合;否则判断是否为满队,如果是满队状态则删除队首元素并将当前的访问信息加入到RCx中,否则直接将当前访问信息加入到RCx

步骤五:线程t对x进行访问,判断当前是否为写访问,如果不为写访问则返回步骤二,否则遍历并分析WCx中线程u对x的历史访问信息直到最后一个元素,即如果WCx[u]中线程u的时间戳与当前线程t的时间戳VCt[u]不满足Happens-before关系,且t目前获得的锁集与WCx[u].LockSet交集为空集,则报告写-写类型数据竞争错误,进入步骤六;

步骤六:判断x当前是否处于读共享状态,如果处于读共享状态则判断读向量时钟Rx与当前线程t是否满足Happens-before关系,如果满足则报读-写类型数据竞争错误并删除Rx,否则进入步骤七;

步骤七:遍历并分析RCx中线程u对x的历史访问信息直到最后一个元素,即如果RCx[u]中线程u的时间戳与当前线程t的时间戳VCt[u]不满足Happens-before关系,且t目前获得的锁集与RCx[u].LockSet交集为空集,则报告读-写类型数据竞争错误,进入步骤八;

步骤八:判断WCx最后一个元素的epoch值与t的epoch值是否相等,如果相等则更新最后一个元素的LockSet集合;否则判断是否为满队,如果是满队状态则删除队首元素并将当前的访问信息加入到WCx中,否则直接将当前访问信息加入到RCx

步骤九:判断终止条件,程序P是否执行完毕,如果P执行完毕,则输出数据竞争检测报告;否则,返回步骤二。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安邮电大学,未经西安邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202110659412.6/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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