Java并发程序的模型提取与模型检测技术研究

被引量 : 0次 | 上传用户:zcykf
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着多核心处理器系统的发展,分布式并发系统已成为当前主流的软件体系结构。分布式软件的特性导致错误不可重现,使软件排错工作非常困难。Java是在语言级别支持并发的高级语言,其提供的语言特性和大量的类库很好地支持了并发程序的编写。但这些类库都有各自的特点,如果使用不当会造成一些难以发现,却危害严重的问题。同时,Java内存模型JMM(Java Memory Model)允许编译器在优化过程中改变程序的执行顺序,这会让多线程Java程序产生许多意想不到的错误。Java规范中程序的正确性仅仅依赖于程序员编写正确的,不会冲突的代码,很难满足高可靠性软件的要求。针对上述问题,本文提出了一套对Java多线程并发程序错误进行检测的方法。第一部分工作提出了一种自动化模型检测的技术,并制作了工具JTS(Java To SPIN),实现了对Java并发程序的模型检测与验证。JTS对Java程序进行分析,产生抽象语法树,建立程序的抽象模型。分析中特别针对Java虚拟机的并发机制和类库实现进行了建模,并利用模型检测工具SPIN进行了模型检测。在实验中JTS成功地对多个Java程序进行了模型提取和模型检测,给出了错误路径。JTS建立的模型准确地再现了Java程序的执行过程,发现了其中隐藏的并发程序错误。这种检测方法为发现和修正这类不可重现,难以测试的并发错误提供了一种新的方法和思路,是传统测试方法在并行程序领域的的一种尝试与补充。第二部分工作提出了另一种新的方法,针对JMM所允许的程序顺序变化,结合程序中的依赖关系、volatile变量和串行化代码等建立模型,进行模型检测。根据这种检测方法,给出了程序的乱序模型和模型检测结果。在模拟执行和检测结果序列中,可以清楚地看到Java多线程并发程序的乱序执行情况。该方法检测现有JMM规范下所有允许的代码顺序变化,可以发现原有技术无法检测的错误,并给出错误路径,推进了高可靠性Java程序的验证工作。
其他文献
近年来不断发生的财务欺诈案件给公司和企业及投资者带来巨大的损失,因而引起人们对公司和企业的内部控制有效性的关注.随着人民生活水平不断提高,人们群众对医疗服务的需求
马勃是较常用的传统药用真菌,广泛分布于世界各地。中国药典(2005年版)收载的马勃主要为脱皮马勃(Lasiosphaera fenzlii Reich),大马勃[Calvatia gigantean(Batsch ex Pers.)Lloyd]
20世纪50年代以凯鲁亚克为代表的美国“垮掉派”文学以颠覆传统文学价值取向的视角,离经叛道的行径,再现20世纪五十、六十年代美利坚合众国社会底层的生活真实,带给人独特的
目的研制用于测量中低能质子回旋加速器产生的伽玛场的空气电离室。方法分别采用有限元分析方法和蒙特卡罗方法模拟计算空气电离室的电场分布和伽玛射线在电离室中的能量沉积
当今世界,环境问题引起越来越多的关注,经济增长与环境污染之间的关系已经成为国内外学者研究的热点问题。改革开放以来,我国经济高速发展,伴随着各种各样的问题产生,研究中
主体性问题不仅在学术界受到关注,而且也是人的根本存在方式,是人的本质力量的确证和体现。马克思说过:“人始终是主体”。人作为道德主体,其主体性就表现为道德主体性。本文
目的旨在探讨院感信息化上报平台对重症监护室(Intensive Care Unite ICU)护理管理质量的影响。方法选取2015年1月至2016年4月在医院感染管理及多重耐药菌(Multi Drug-resist
近年来,随着基础设施建设的快速发展,高压旋喷扩底桩在工程中得到广泛应用,然而其理论研究远远滞后于工程应用。为此,本文以河南某粮食储备库平房仓仓库堆场地基处理工程为背
产品是为满足社会化人们的需求,涉及相关的人、物(产品)、环境(自然的和社会的),而人、物、环境是密切相关的整体系统。设计是人们有目的的实践活动。只有将产品置于整体系统
随着国内酒店市场竞争的日益激烈,创造顾客满意已成为酒店经营的宗旨。一方面,酒店员工的服务质量决定了顾客的满意度,从而间接影响了酒店的业绩和利润,另一方面,酒店本身的