[发明专利]一种锁使用模式自动化静态分析系统在审
| 申请号: | 201410624469.2 | 申请日: | 2014-11-07 |
| 公开(公告)号: | CN104484266A | 公开(公告)日: | 2015-04-01 |
| 发明(设计)人: | 王煜;戚正伟;薛墨池;项程程;管海兵 | 申请(专利权)人: | 上海交通大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 上海新天专利代理有限公司 31213 | 代理人: | 张宁展 |
| 地址: | 200240 *** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 使用 模式 自动化 静态 分析 系统 | ||
技术领域
本发明涉及一种研究锁使用模式的自动化静态分析系统。
背景技术
并发程序在提高计算机软件性能、用户体验方面发挥着举足轻重的作用。然而,编写一个高质量的并发程序对于一个程序员来说并不是一件容易的事。由于并发程序中线程调度的不确定性,并发程序开发者很难考虑到所有的输入以及线程调度组合,使得目前的并发程序中很容易出现并发错误。另一方面,并发程序带来的问题也给传统的软件调试、软件测试、程序分析等领域带来新的挑战。最近越来越多的研究把注意力放在对并发程序的调试、测试以及漏洞检测上,然后这些研究成果在不同程度上都存在着难以解决的问题,如:
1)软件测试
软件测试是一种在软件开发过程中发现错误的手段。对于并发程序的测试而言,线程调度的情况是随着进程数成指数级增长,手写的测试用例很难覆盖所有可能的情况。对此,随机测试以及符号执行被广泛应用于并发程序测试用例的自动生成上。然而随机生成的测试用例有部分是重复的,而且其中很多测试用例在发现错误上比较低效,更重要的是这些测试用例需要依赖对错误模式的理解来发现程序中的问题。故全部运行所有随机生成的测试用例既需要花费大量的时间并且不能保证测试覆盖率以及发现错误的能力。虽然符号执行生成的测试用例的路径覆盖率很高,但是在遇到比较复杂的分析对象时很容易出现分析路径过多引起的状态爆炸的问题,尤其是遇到循环、递归时。这些缺陷使得符号执行技术难以使用在对大型并发程序如MySQL、Apache的完备、精确分析上。
2)错误检测
为了更好提高并发程序的质量,许多研究集中于对并发程序错误的检测上。目前大部分的并发错误检测可分为两大类:数据竞争检测以及死锁检测。然而,他们的研究均存在着各种的问题。一方面,静态数据竞争检测虽然准确完备,然而可能会产生很多误报;另一方面,动态分析方法的分析结果可能不精确,也可能带来大量的额外运行时开销。并发程序错误检测的另一个重要方向是死锁检测。在对于死锁检测的研究中也遇到了一些问题,如会产生大量的误报,或者使用到的算法对复杂的并发程序可扩展性不好等。
在众多静态分析框架中,LLVM是其中的佼佼者。LLVM(Lovel Level Virtual Machine)是由伊利诺斯大学香槟分校(UIUC)维护和开发的用来支持透明的、全软件生命周期分析、优化和转换的开源编译器框架,其集成了一系列模块化、可复用编译器以及工具链,到现在已经发展成为一个包括著名C++/Object C编译器Clang以及著名符号执行工具KLEE在内的项目群。LLVM为使用者提供了基于SSA形式的LLVM中间语言、编译器前端、平台无关优化技术等功能,通过LLVM,使用者可以实现自己的优化算法、编写自己的分析工具、甚至能够设计出自己的语言以及开发新语言的编译器。在本发明中,LLVM被选作为自动化锁分析方法的代码分析框架。
发明内容
针对上述现有的技术的不足,本发明的发明目的在于提供一种锁使用模式自动化静态分析系统,能够在低分析开销条件下识别不同的锁变量、不同的锁模式并且统计锁语言的特性以及锁使用模式等方面的数据,然后通过获得的数据发现锁使用的一般性规律,为分析工具的改进和程序员编写并发程序提供建议。
本发明的发明目的通过以下技术方案实现:
一种锁使用模式自动化静态分析系统,运行在LLVM分析框架,包含中间代码编译器、支撑引擎以及锁分析器。
所述中间代码编译器用于将目标程序的源代码编译链接成单文件的LLVM中间代码;
所述支撑引擎用于根据LLVM中间代码为锁分析器提供支撑服务,所述支撑服务包含构造控制流图、构造函数调用图、构造控制依赖图、构造数据流、指针别名分析、函数建模;
所述锁分析器根据支撑引擎提供的支撑服务对目标程序中的每个函数单独进行分析,收集锁相关的程序语言特性数据,识别锁敏感函数内所使用的每个锁模式,并且根据常见锁模式的特征对识别的模式进行分类,并同时统计各种常见的锁模式出现的次数。
优选地,所述中间代码编译器通过先过滤错误的编译链接选项以及无效的编译链接选项,然后根据编译LLVM中间代码需要填加编译链接选项,再后根据实现全代码编译以及删除会对分析结果造成影响的优化措施的需要修改编译链接来最终实现LLVM中间代码的编译。
优选地,锁分析器包含语言特性收集器和模式分析器;
所述语言特性收集器用于根据支撑引擎提供的支撑服务收集目标程序中与锁相关的程序语言特性方面的数据,为模式分析器提供数据依据;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410624469.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种内存回收方法和装置
- 下一篇:一种IO设备固件的升级装置及方法





