增量式数据竞争检测

来源 :中国科学技术大学 | 被引量 : 0次 | 上传用户:liulang75281899
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
在多线程程序中,当两个线程在没有时序约束下访问同一段内存位置时,就可能导致数据竞争。数据竞争使多线程程序的执行具有不确定性,且难于调试和理解。因此研究开发自动检测数据竞争的精确高效工具是非常有价值的。作为第一个在语言级别支持多线程的编程语言,Java被广泛地使用,因此开展对Java并发程序的分析和优化是非常重要的。本论文以Java程序的数据竞争检测技术研究为选题,在调研现有的静态和动态竞争检测技术的基础上,提出并在实际的Java虚拟机中实现了一种精确有效的在线增量式数据竞争检测算法。论文的主要工作和特色如下:1.基于即时编译器,提出了一种结合锁集和发生序关系的增量式竞争检测框架。该框架兼具静态分析不受程序规模限制、无插桩和动态分析的仅分析运行时相关方法精确性高等特点。该框架包括方法内分析和方法间分析两个部分。2.基于增量式竞争检测框架,设计方法内分析算法,为流经编译流水线的每个方法收集方法摘要信息,并动态构建和维护跨线程方法调用图。方法摘要包括对象间的域引用关系、对象访问事件、尚未分析的调用点和由start/join引起的线程时序关系等,为方法间分析提供基础信息。跨线程方法调用图的动态构建和维护既降低了空间开销,也能适应Java语言这种因动态类载入等而导致的“开放世界”环境。3.设计自下而上的上下文敏感的跨线程的方法间分析算法,在分析的同时计算并输出潜在的数据竞争。所设计的方法间分析算法保证每个方法最多只被分析一次,并且仅当一个方法的所有被调用点均被分析后,才将该方法向上结合,保证静态程序正文中的每个调用点只被分析一次。4.基于上述框架和算法,在实际的Java SE平台Harmony上实现了增量式竞争检测系统。通过对SPECjbb2005等多个基准程序的测试,实验结果表明所提算法具有与O’Callahan和Choi等的动态竞争检测算法类似的精确性,而算法所用的分析时间仅占总编译时间的2%~4%左右,且无额外的运行时开销。
其他文献
智能规划自提出至今已经有几十年的历史。在科学研究飞速发展的今天,研究者们不断地探索智能规划新的应用领域和发展方向,不断提出新的规划求解算法以扩展智能规划处理问题的
随着饮食环境问题的不断加重,近年来,肺部疾病的发病率也呈不断上升的事态,已然成为了当前影响人类生活质量甚至生命的大敌因此,如何能够在病变早期就能准确的诊断出病变良恶性质
基层社区处于临床工作的最前沿,由于社会的进步和医学技术的普及,全科医疗逐渐成为社区卫生保健体系的主题.因此,作者在本文中简要解释了全科医疗的概念,并对该医疗保健模式
随着互联网技术的发展,信息系统的开发与实施向着服务开放、管理统一、部署灵活的方向发展,同时也给系统的资源保护与访问控制带来了新的难题和挑战。传统的基于角色的访问控
IP组播,特别是分层组播,是一种广受重视的网络技术,为群组应用提供了高效的传输机制。在一对多和多对多的网络通信中,组播技术可以有效地节省网络带宽。但是目前组播并没有得