[发明专利]基于抽象解释的多中断程序数据访问冲突检测方法有效
申请号: | 201410031451.1 | 申请日: | 2014-01-23 |
公开(公告)号: | CN103778062A | 公开(公告)日: | 2014-05-07 |
发明(设计)人: | 文艳军;王戟;吴学光;毛晓光;董威;陈立前 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 湖南兆弘专利事务所 43008 | 代理人: | 周长清 |
地址: | 410073 湖南省长沙市砚瓦池正街47号中*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 抽象 解释 中断 程序 数据 访问 冲突 检测 方法 | ||
技术领域
本发明涉及数据访问冲突检测技术领域,尤其涉及一种基于抽象解释的多中断程序数据访问冲突检测方法。
背景技术
随着我国航天事业的发展,航天嵌入式软件变得越来越复杂,也随之产生了各种软件问题,航天嵌入式程序的数据访问冲突问题就是其中的一种。数据访问冲突问题问题的产生是由于航天器的不同器件之间、多个并发运行的软件之间存在复杂的数据交互。因此若同步、互斥机制安排不当,很容易产生数据竞争、原子性破坏等数据访问冲突问题,从而导致软件问题或系统故障。然而由于数据访问冲突问题涉及到并发软件之间的复杂交叠和时序关系,其检测较为困难。
数据访问冲突是指多个并发执行流(如任务、中断、线程)对同一数据单元进行同时读写、且其中至少有一个操作是写操作,主要表现为数据竞争和原子性破坏两种形式,数据竞争是单条语句间的数据冲突,原子性破环是单条语句与语句块之间的数据冲突。由于数据访问冲突中涉及的两次访问之间的次序不可确定,程序可能会因此产生异常行为,严重时甚至会导致软件或系统失效。
由于航天嵌入式软件规模大、中断和任务调度并存且运行环境复杂不能确定,从而可能导致在分析检测中产生状态空间爆炸的问题。中断驱动型软件包含常规任务、中断处理程序等成分,是一种特殊的并发软件,如何分析这类程序是首先需要解决的问题。一方面,中断驱动型软件具有一般并发程序的共性问题,即因为状态的并发组合导致的整体状态空间爆炸问题;另一方面,中断驱动型软件与一般的多线程程序不同,因为中断触发的不确定性和中断控制的动态性,中断驱动型程序的执行过程更加复杂,需要作特殊的语义解释。
现有技术中,通过对代码源程序进行一定程度的抽象以解决状态空间爆炸的问题,但同时需要保证所检测的性质在抽象后的模型与之前未抽象的代码保持一致,以保证抽象后模型的可靠性。目前已有多种对程序进行抽象建模的方法,然而还缺乏对于特殊并发软件,如多中断驱动型程序的有效抽象建模方法以及相应的数据冲突检测方法。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种实现方法简单、复杂度低、准确性及可靠性高,适用于航天嵌入式软件的基于抽象解释的多中断程序数据访问冲突检测方法。
为解决上述技术问题,本发明提出的技术方案为:
一种基于抽象解释的多中断程序数据访问冲突检测方法,步骤为:
(1)任务间影响的抽象:将每一个中断驱动型程序作为一个任务并采用抽象解释框架进行描述,将每个任务中其他任务对目标共享变量的每一次修改及每一次修改的修改条件抽象为一条干扰信息,每个任务中对目标共享变量的所有干扰信息构成一个干扰信息集合;对每个任务的干扰信息集合独立的进行迭代计算,直到所有的任务获得稳定的干扰信息集合;
(2)获得稳态干扰:收集所有任务对应的稳定干扰信息集合构成一个全局干扰信息集合,通过迭代计算获得稳定的全局干扰信息集合;每次迭代时,输入全局干扰信息集合并将全局干扰信息集合遍历每个任务,每个任务经过迭代后得到一个任务间相互影响后的目标干扰信息集合,所有任务的目标干扰信息集合合并后作为下一次迭代的输入,直到全局干扰信息集合达到不动点;
(3)访问冲突检测:使用稳定的全局干扰信息集合对每个任务进行遍历,待检测任务对目标共享变量进行访问时,若全局干扰信息集合中存在同时满足目标共享变量修改条件的干扰信息,判定为存在数据访问冲突。
作为本发明的进一步改进,所述步骤(1)中修改条件包括:到达修改目标共享变量的路径条件、到达修改目标共享变量时程序的执行状态条件。
作为本发明的进一步改进,所述步骤(3)中同时满足目标共享变量修改条件的判断方法为:判断待检测任务对目标共享变量的访问路径与其他任务到达修改目标共享变量的路径是否同时满足且同时为可执行状态,若为是,判定为同时满足,若为否,判定为不同时满足。
作为本发明的进一步改进,所述步骤(1)中对每个任务的干扰信息集合独立的进行迭代计算的具体实施方法为:对每个任务进行多次独立的迭代,每个任务执行每次迭代时,将所有任务对目标共享变量的干扰信息集合进行合并并作为迭代的输入,经过迭代后输出更新的干扰信息集合;所有任务得到的更新的干扰信息集合进行合并并作为下一次迭代的输入,直到所有任务的干扰信息集合达到不动点。
作为本发明的进一步改进,所述步骤(1)中对中断驱动型程序进行抽象解释的具体方法为:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410031451.1/2.html,转载请声明来源钻瓜专利网。