[发明专利]动静态结合的中断驱动程序数据竞争检测方法有效
| 申请号: | 201410324303.9 | 申请日: | 2014-07-08 |
| 公开(公告)号: | CN104090798A | 公开(公告)日: | 2014-10-08 |
| 发明(设计)人: | 王林章;陈园军;陈志;李宣东 | 申请(专利权)人: | 南京大学 |
| 主分类号: | G06F9/445 | 分类号: | G06F9/445 |
| 代理公司: | 南京瑞弘专利商标事务所(普通合伙) 32249 | 代理人: | 杨晓玲 |
| 地址: | 210093 江*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 静态 结合 中断 驱动程序 数据 竞争 检测 方法 | ||
技术领域
本发明涉及中断驱动程序的测试方法,主要涉及中断引发的嵌入式系统中的数据竞争检测,属于软件工程、软件测试、嵌入式系统交叉技术领域。
背景技术
嵌入式系统被广泛应用在各个领域,包括汽车电子、航天电子、医疗电子等。这些领域往往对安全性和稳定性的要求特别高,任何的系统运行故障都会导致及其严重的后果,比如著名的Therac-25事件,就是在某些种特殊场景下的一次不小心的按键动作,导致了中断引发的数据竞争,最终了严重的医疗后果。
中断驱动的嵌入式系统的稳定和安全具有很高的重要性,但嵌入式系统程序的错误,尤其是其并发性错误,被认为是极其难以检测、定位和修复的。这主要是因为并发错误对执行序列很敏感,即使是同一测试用例,每次的执行序列都有可能不同,最终造成无法预测程序的执行结果。因此,依赖传统的通过检查程序输出结果来判断程序错误的方法,无法检测出大多数的并发错误。此外,中断本身和硬件紧密相关,系统运行环境复杂,更加剧了对并发错误的检测、定位和修复的难度。
如何设计一个较为完整的能够检测中断驱动的嵌入式系统中数据竞争的自动化方法,来有效、高效地帮助测试人员提供工作效率,保障安全性嵌入式系统的稳定性和鲁棒性,是我们一直在思考的问题。
传统的解决方法有:通过将中断驱动程序转换成多线程程序,然后利用多线程中的数据检测工具找到竞争问题,然而,中断驱动程序和多线程程序在诸多方面的特性存在着本质的区别,二者的转换势必造成信息量的丢失,导致报告结果的误报;采用随机化调度、基于共享变量访问的调度等方法,通过对程序的插桩来动态执行程序,找到竞争问题,但是,由于其强制的路径执行方法造成了诸多误报,且大量的人工操作影响了工具的实用性,导致了该方法不具备可使用性;还有基于模拟器的方法,虽然能够一定程度上检测到数据竞争问题,却因为需要监控系统的全部状态,且需要进行多次重复运行,系统开销大,时间成本高。
目前对中断驱动程序的数据竞争检测仍存在着两个瓶颈:一是结果的准确性问题,在避免误报的同时能够尽量避免漏报;二是实用性问题,其测试方法应该能够不依赖于具体的系统和平台,具有广泛的应用场景。本发明设计一种动静态结合的竞争检测方法,通过共享资源的检测技术,控制流图生成技术,数据流分析技术,模拟器运行控制技术,检测并验证出系统的竞争关系,突破了上述的两个瓶颈,解决了中断驱动的数据竞争检测问题,保障嵌入式系统的安全和稳定,为我国航天事业、医疗事业等高稳定性嵌入式 程序需求的关键性安全领域提供可靠性保证。
发明内容
技术问题:本发明的目的是设计一种动静态结合的中断驱动程序数据竞争检测方法,以保障安全性嵌入式系统的稳定性和鲁棒性,解决中断驱动的嵌入式系统程序中存在的严重威胁系统安全和稳定性的数据竞争问题。
技术方案:本发明提供一种动静态结合的中断驱动程序数据竞争检测方法,利用静态方法来对源程序进行静态分析得到潜在的数据竞争序列,通过对静态分析的结果进行动态执行,验证潜在竞争的真实性,并根据潜在竞争的严重性进行排序,得到测试结果报告。
本发明的动静态结合的中断驱动程序数据竞争检测方法包含的步骤为:
步骤1:用户指定受测试的中断驱动程序源文件,所述的中断驱动程序源文件包含若干个函数构成的主任务的源代码,以及该任务涉及到的中断所对应的中断处理程序的源代码;
步骤2:用户指定测试的配置文件,所述配置文件是XML文件,XML的全称是可扩展标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言;所述的测试配置文件包括主函数的入口说明、各个中断处理程序的中断向量号和中断优先级;
步骤3:对受测试的中断驱动程序源文件进行共享资源检测,得到共享资源列表;
步骤4:对受测试的中断驱动程序源文件进行中断操作行为检测,得到中断操作列表;
步骤5:对中断驱动程序源文件进行分析,得到简要控制流图RCFG,
步骤6:将所有的RCFG互联起来,得到全局的中断互联控制流图IICFG;
步骤7:对IICFG进行深度优先遍历,得到中断驱动源程序的静态分析结果;
步骤8:在西米克斯Simics仿真平台中执行中断驱动程序源文件,验证PR中的所有静态分析结果,
步骤9:对验证后的验证结果进行严重性排序,从而得到了对受测试的中断驱动程序源文件的竞争检测结果。
所述步骤3具体过程如下:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410324303.9/2.html,转载请声明来源钻瓜专利网。





