基于未来锁集的死锁规避技术研究

来源 :哈尔滨工业大学 | 被引量 : 0次 | 上传用户:kcsj001
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着计算机的发展,软件的规模不断扩大,其复杂度也随之增加,程序并发执行已经成为提高程序工作效率的一种常用方法,而由并发程序引发的程序问题也越来越严重。其中死锁是并发程序中的典型问题之一,也是影响并发软件安全的主要问题。死锁会导致程序无法正常运行或终止,甚至崩溃,造成重大人身威胁和财产损失。同时死锁的运行状态空间庞大,难以重现和修正等问题使其成为软件领域的难题之一。因此,如何有效的检测并规避死锁,提高软件的可靠性和安全性,成为急需解决的问题。目前的死锁规避方法大部分都是基于动态分析的,基于动态分析的死锁规避方法需要在程序运行之后执行死锁规避算法,主要有两种策略,第一种是在死锁发生之前对有加锁操作的关键区代码进行串行执行,另一种是在死锁发生之后回滚到死锁发生之前的检查点后再继续执行。这两种死锁规避策略对源程序执行的效率影响较大,甚至直接导致程序的执行结果出现错误。针对这个问题,本文研究静态分析与动态分析相结合的死锁规避方法,提出一种基于未来锁集的死锁规避方法,其主要思想是根据静态插装的信息智能的区分可能发生死锁的关键区,并使它们串行从而规避死锁。具体完成了以下工作:首先在分析编译器前端Clang和死锁产生原因的基础上,研究了面向死锁规避的程序插装方法,提出了一种基于未来锁集的死锁规避算法。然后,根据前面的插装信息完成计算未来锁集,判断是否执行该加锁操作,建立全局锁分配图等工作,实现规避死锁的逻辑,并且保证在截取的过程是原子执行的。最后,设计实现了一个原型系统Flider,从死锁规避能力、死锁规避效率和工具的可扩展性等几个方面对系统进行了测试,测试结果表明该方法能够提高对死锁的规避能力,并且对源程序执行效率的影响较小。
其他文献
近年来,由于计算机应用技术的高速发展,人们获取数据的能力得到极大的提高,数据流作为一类重要的数据来源,受到越来越多的关注,基于数据流模型的聚类算法已成为重要的前沿课
随着Internet的迅速发展,基于P2P技术的各种网络应用越来越广泛,其中影响最大的应用是文件共享。BitTorrent是当今Internet上非常流行的P2P文件共享工具,它能够快速、有效地
随着社会的发展,人们生活水平的日益提高,人们对于家居的门禁系统的安全性和可靠性的要求也越来越高。传统的机械锁由于机械结构简单,安全性低,容易遭到暴力破坏等特点已经不
随着嵌入式计算机技术的发展,嵌入式计算机应用的领域不断的扩大,除了在一些民用领域,嵌入式计算机在航天、军事、工业等特殊领域的应用也逐渐提高。与此同时,嵌入式计算机所
大型应用软件往往非常复杂,而一般的软件架构设计缺乏有效的模块复用,导致软件内部很容易出现功能模块冗余和无法满足快速开发业务新需求功能等问题。而SOA软件体系设计架构则
当今社会信息技术飞速发展,计算机被应用于生产和生活的各个领域。计算机存储设备中的一些敏感信息的安全,不仅影响计算机的稳定运行,而且会危害计算机用户的利益。因此研究
支持向量机(Support Vector Machines, SVM)是一种高效的分类方法。支持向量机虽然能克服维数灾难问题,但如果直接使用原始数据集对其进行训练,可能因为计算量大而导致训练无
本课题的研究方向是基于现代编译结构及编译技术的角度,而进行的嵌入式系统结构的设计优化。本课题的目的是要从现代编译结构特征及嵌入式RISC特征出发,总结出什么样的系统结构
现实世界中大量的优化问题往往是动态的,其优化参数、约束条件、优化目标等是时变的。这些动态优化问题要求算法能准确检测出环境发生变化的时刻,以及对变化后的环境做出及时
无线传感器网络,也称感知网,是一种由大量体形小、成本低,具有通信能力的传感器通过ad hoc方式形成的网络。其能够实时获取、分析、融合周边环境信息,反馈给后台用户,在环境监测、