POSIX多线程程序中数据竞争错误的检测

来源 :华中科技大学 | 被引量 : 0次 | 上传用户:zm_free
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着半导体技术和发热量的限制,处理器频率的发展已经不再适用于摩尔定律,处理器频率的提高越来越缓慢,因此通过增加处理器上面的核心数量来提高处理器性能是一个有效的方法。多核处理器的普及给程序的并发性提出了新的要求,多线程编程技术使用越来越广泛,并发程序的并发度越来越高,越来越复杂。现代商业竞争中,时间就是金钱,研究表明软件开发过程中投入在软件调试阶段的时间越来越多。数据竞争错误是一类严重的多线程程序并发错误,这类错误会使得多线程程序在运行时进入一种非预期状态。为了对这类错误进行检测,需要提供方便高效的调试工具,协助开发人员尽可能快速准确地找出软件中的错误,以提高系统的可靠性和稳定性。  本文针对数据竞争错误产生时一般会出现线程间同步失控的现象设计实现检测系统。系统运行在Linux桌面操作系统上。假定被检测多线程程序使用多C语言编写,使用的线程库是POSIX多线程库,用GCC编译器进行编译。  本文首先总体介绍了数据竞争检测系统,包括并发程序调试的总体框架以及并发程序的动态符号执行以及数据竞争检测算法在系统中的设计与实现。并发程序的动态符号执行设计与实现部分分析了并发程序的符号执行技术的挑战,介绍了记录与重放功能设计,详细介绍了符号执行技术的实现。数据竞争检测算法设计与实现部分说明的数据竞争在并发程序中的表现形式,介绍了数据竞争检测算法中的锁集合算法,详细介绍了锁集合算法的原理以及对它进行的改进。最后对系统进行了功能性测试,展示系统对并发程序实验用例中数据竞争错误的检测过程。
其他文献
当今时代是数字化时代,大数据在给企业提供更多的商业价值和发展机会的同时,也给数据的有效管理和利用提出了更高的需求:海量的数据存取,更低的读写延迟,强大的可用性、可伸缩性和
不断发展的互联网需要有良好的内容分布技术,来应对互联网上大容量数据内容的广泛传输。集中控制式CDN技术和自由共享式的P2P内容分布技术,在应用中不断暴露出种种缺陷,已不能满
本文研究了面向互操作的企业建模方法以及基于XMI的模型转换。首先,在总结大量企业建模实践和前人经验的基础上提出了一种面向ERP全生命周期的企业建模方法——ICEM(Interope
由于短信业务的迅速发展,短信中心产生的话单数量也急剧增加。同时,短信系统运行的稳定性直接关系到用户的切身利益。为了提高对短信系统的监视和管理能力,新疆移动决定利用现有
在图像获取和处理中,常常有高速运动物体的图像获取需求。这在工程实践中和科学研究中有很大价值,如研究快速转动的发电机的运动状态,子弹发射的运动状态。而快速获取图像常常还
自因特网兴起以来,其迅猛增长的势头就从未停止,通信链路以吉比特乃至更高的速度进行数据传输己不成问题,而承担网络通讯任务的传统路由器,通常对数据包未加区分尽力而为地转发,这
本文在分析中小型医院基本需求的基础上,以Powerbuilder和Oracle9i作为开发平台,采用快速原型开发方法,研究和开发了中小型医院信息管理系统的检查检验子系统和院长管理子系统。
数据受损检测作为入侵容忍技术的重要组成部分,有助于保护数据库应用系统的可生存性。但是已有的数据受损检测技术不满足数据库应用系统受损分析的要求,数据受损检测结果存在过
基于策略的网络管理以整个网络为管理对象,能解决传统网络管理不能解决的一些问题,正逐渐成为一种新的网络管理方案。因此将策略管理和传统的SNMP管理结合起来,提出了基于策略的
基于构件的软件工程能够有效地提高软件开发的质量和效率,而构件组装技术是实现基于构件的软件工程的关键。快速发展的Internet计算平台与软件工程的结合更使软件工程具有了更