[发明专利]一种基于加权依赖图的并发程序执行轨迹静态简化方法有效
申请号: | 201810860882.7 | 申请日: | 2018-08-01 |
公开(公告)号: | CN110795327B | 公开(公告)日: | 2021-07-30 |
发明(设计)人: | 姜淑娟;薄莉莉 | 申请(专利权)人: | 中国矿业大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F9/52 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 221116*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明提供一种基于加权依赖图的并发程序执行轨迹静态简化方法,包括下列步骤:1)事件依赖关系计算;2)加权依赖图构建;3)加权依赖图简化;4)拓扑排序。本发明解决了目前存在的并发程序执行轨迹方法不能快速有效地获得最优简化后轨迹的问题,不仅最大限度地减少了原始轨迹中的上下文切换,而且减少了并发程序执行轨迹简化过程因随机性消耗的大量时间,进而提高了并发程序调试的效率,从而为准确修复并发缺陷提供了保障。 | ||
搜索关键词: | 一种 基于 加权 依赖 并发 程序 执行 轨迹 静态 简化 方法 | ||
【主权项】:
1.一种基于加权依赖图的并发程序执行轨迹静态简化方法,其特征在于,针对原始的并发程序执行轨迹,计算轨迹中所有事件的依赖关系,然后,根据事件的依赖关系构造初始的加权依赖图,进而在不打破事件依赖关系的前提下对初始的加权依赖图进行化简,最终选择已有的拓扑排序算法对简化后的加权依赖图进行拓扑排序,生成一个线性序列,即简化后的并发程序执行轨迹;该方法包括下列步骤:/n1)事件依赖关系计算;/n定义1:两事件的依赖关系总体分为本地依赖和远程依赖;/n本地依赖:表示相邻两事件被同一个线程调用;/n远程依赖:表示相邻两事件被两个不同线程调用;/n定义2:两事件远程依赖可分为冲突依赖和同步依赖;/n冲突依赖:表示相邻两事件被两个不同线程调用,且同时访问共享变量,且至少有一个是写访问,包括读写依赖、写读依赖和写写依赖;/n同步依赖:具有同步原语的两事件构成的依赖关系,包括解锁加锁依赖、线程创建开启依赖、线程退出结束依赖和唤醒等待依赖;/n从原始轨迹的第一个和第二个事件开始,依次判断两事件是否属于同一线程,将其分为本地依赖和远程依赖,进一步通过判断两个事件的类型,将其分为冲突依赖和同步依赖,并分别加入到相应的依赖关系列表中;/n2)加权依赖图构建;/n定义1:加权依赖图的边集包括本地边和远程边;/n本地边:表示两端事件属于本地依赖关系;/n远程边:表示两端事件属于远程依赖关系;/n定义2:节点度表示节点的入度与出度之和;/n定义3:边的权重表示该边两端节点的度之和;/n使用步骤1)计算的事件依赖关系,按轨迹中事件的顺序,用本地边和远程边连接事件,构成一个初始的加权依赖图,构建依赖图过程中每添加一条本地边和远程边则更新节点度,进而更新本地边的权值;/n3)加权依赖图简化;/n定义1:可达性是指从起始节点出发,经过有限条边之后可以到达目的节点;/n加权依赖图简化是一个迭代的过程,每次迭代从步骤2)构建好的初始加权依赖图中选择具有最小权值的本地边,判断其是否符合合并条件,如果从入节点到出节点除了本地边以外是不可达的,则说明在这两个节点之间没有其他依赖事件,可以合并,否则不能合并,合并后更新相关节点的度和相关边的权重,迭代进行直到所有的局部边被检查一遍,则加权依赖图化简过程结束;/n4)拓扑排序;/n定义1:拓扑排序是指将一个有向无环图中的所有节点排成一个线性序列,使得图中任意一对节点u和v,若边(u,v)存在于图中,则在线性序列中u仍出现在v之前;/n定义2:上下文切换是指两个连续事件被不同的线程调用,这两个连续事件之间则发生了一次上下文切换;/n对于步骤3)获得的简化后的加权依赖图,使用已有的拓扑排序算法生成一个线性序列,该序列则为最终的简化后并发程序执行轨迹,轨迹中事件的发生顺序仍遵守原始轨迹中的依赖关系,且轨迹中含有最少的上下文切换。/n
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国矿业大学,未经中国矿业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201810860882.7/,转载请声明来源钻瓜专利网。