[发明专利]一种基于加权依赖图的并发程序执行轨迹静态简化方法有效
申请号: | 201810860882.7 | 申请日: | 2018-08-01 |
公开(公告)号: | CN110795327B | 公开(公告)日: | 2021-07-30 |
发明(设计)人: | 姜淑娟;薄莉莉 | 申请(专利权)人: | 中国矿业大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F9/52 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 221116*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 加权 依赖 并发 程序 执行 轨迹 静态 简化 方法 | ||
本发明提供一种基于加权依赖图的并发程序执行轨迹静态简化方法,包括下列步骤:1)事件依赖关系计算;2)加权依赖图构建;3)加权依赖图简化;4)拓扑排序。本发明解决了目前存在的并发程序执行轨迹方法不能快速有效地获得最优简化后轨迹的问题,不仅最大限度地减少了原始轨迹中的上下文切换,而且减少了并发程序执行轨迹简化过程因随机性消耗的大量时间,进而提高了并发程序调试的效率,从而为准确修复并发缺陷提供了保障。
技术领域
本发明属于软件测试技术领域,特别是并发程序调试领域,用于帮助开发人员快速理解并修复并发程序中的错误。
背景技术
多核架构处理器的兴起迅速突破了单核处理器的性能瓶颈。为了适应硬件升级,程序设计必须向多线程转变。因此,并发程序成为当今软件开发行业的主流。然而,由于并发程序的共享内存机制和线程调度的不确定性,会导致并发缺陷。不同于串行程序,这些并发缺陷是在特定的线程调度下出现的,即,具有偶然性。即使在某一次程序执行中出现了并发缺陷,在下一次执行时不会轻易再现,从而给并发程序调试工作带来巨大困扰。
并发程序执行轨迹简化可以有效帮助开发人员快速理解并修复并发缺陷,提高程序调试的效率。通过并发程序执行轨迹化简,一方面可以在保证并发缺陷重现的前提下,提高并发程序执行的速度,另一方面也有助于开发人员推理引发并发缺陷的原因,从而更加准确地修复缺陷。
并发程序执行轨迹简化的主要目标是减少线程切换的个数。该问题已被证明是一个最优化问题。已有的并发程序执行轨迹简化方法主要分2类:线上简化和线下简化。线上简化通过使用向量时钟或锁分配技术即时精确地获取共享内存依赖,然后使用传递规约或线程/空间本地化来分组变量,以简化轨迹。线上简化精确,却比较低效。线下简化是一种比较直接的简化方法。它首先获得整个执行轨迹,然后在该轨迹上执行简化操作。传统的基于图的简化方法随机选择一条局部边,判断该局部边两端的节点能否合并,若满足条件则合并。然而,其随机性降低了并发程序执行轨迹简化的效率,而且,在有些情况下无法得到最优的简化后轨迹。
发明内容
本发明目的在于提供一种基于加权依赖图的并发程序执行轨迹静态简化方法,解决目前存在的并发程序执行轨迹简化方法不能快速有效地获得最优简化后轨迹的问题,进而尽可能地减少原始轨迹中的上下文切换,提高了软件调试工作效率,从而更好地推理导致并发缺陷的原因。
为达成上述目的,本发明提出一种基于加权依赖图的并发程序执行轨迹静态简化方法。方法包括下列步骤:
1)事件依赖关系计算,通过判断原始轨迹中两个相邻事件是否处于同一线程,将相邻两事件分为本地依赖和远程依赖,并进一步根据属于远程依赖的两个相邻事件类型,将相邻两事件分为冲突依赖和同步依赖,冲突依赖包括读写依赖、写读依赖和写写依赖,同步依赖包括解锁加锁依赖、线程创建开启依赖、线程退出结束依赖和唤醒等待依赖;
2)加权依赖图构建,使用步骤1)计算的依赖关系构建加权依赖图,只有当出现远程依赖时才添加本地边并更新节点度,否则将该节点合并到上一个节点,然后添加远程边并更新节点度,最后更新本地边的权重;
3)加权依赖图简化,这是一个迭代的过程,每一次迭代从步骤2)构建好的初始加权依赖图中选择具有最小权值的本地边,判断其是否符合合并条件,如果从入节点到出节点除了本地边以外是不可达的,则说明在这两个节点之间没有其他依赖事件,可以合并,否则不能合并,合并后更新相关节点的度和相关边的权重,迭代进行直到所有的局部边被检查一遍,则加权依赖图化简过程结束;
4)拓扑排序,对于步骤3)获得的简化后的加权依赖图,使用已有的拓扑排序算法生成一个线性序列,该序列则为最终的简化后并发程序执行轨迹,轨迹中事件的发生顺序仍遵守原始轨迹中的依赖关系,且轨迹中含有最少的上下文切换。
进一步,其中上述步骤1)的具体步骤如下:
步骤1)-1:起始状态;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国矿业大学,未经中国矿业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810860882.7/2.html,转载请声明来源钻瓜专利网。