【论文总结】并发缺陷检测技术研究进展_薄莉莉

并发缺陷检测技术研究进展

第2节对并发缺陷进行分类,并给出相应定义;
第3节对已有的并发缺陷检测技术进行分类、分析和比较;
第4节对并发缺陷检测技术的通用性进行分析;
第5节展望未来 的研究重点。

一、引言

Therac-25医疗事故:

  Therac-25取消了硬件互锁机制,为了安全起见改用软件的互锁机制。软件互锁机制在有竞争危害时会失效。其缺陷如下:有一个测试程序中一字节的计数器常常会溢位,若操作员恰好在计数器溢位时输入命令,软件互锁机制会失效。
  例如患者设应该接受200辐射吸收剂量的照射,但是仪器启动后却提供了10000-20000辐射吸收剂量的照射,导致患者灼伤、过辐射等问题。

二、 并发缺陷分类
  • 并发类型状态缺陷
    若线程的类型状态发生改变,且没有与另外线程的其他操作同步,则会造成对象执行其类型状态中不允许的操作,从而产生并发类型状态缺陷。
  • 死锁
    两个或两个以上的进程/线程在执行过程中,由于竞争资源或彼此通信而无限期地陷入僵持的局面,如果无外力作用,它们都将无法推进下去,此时称该系统产生死锁。由于竞争资源而产生的死锁称为【资源死锁】;由于接收不到其他线程发来的消息而陷入无限等待产生的死锁称为【通信死锁】。
  • 数据竞争
    两个或两个以上的线程同时访问相同的内存单元,且至少有一个访问是写操作,同时线程间没有时序约束。
  • 原子性违背
    对共享内存的多个访问存在交错执行,打破了期望的顺序执行序列,即某个代码区域应该是原子的,但在执行过程中因交错执行破坏了其原子性,从而产生与该指令序列原子地执行时不同的执行效果。
  • 顺序违背
    两个内存访问没有按照期望的顺序执行,导致程序异常甚至崩溃。
三、 并发缺陷检测技术

在这里插入图片描述

1. 静态分析
  • 数据流分析
    该技术直接分析程序源代码,通过指向分析和逃逸分析计算共享变量、多线程访问共享变量的位置,并判断不同锁集中的元素是否指向同一个锁对象,从而检测数据竞争、死锁和原子性违背等并发缺陷;或计算程序的静态锁顺序图,将图中的环报告为可能的死锁。
  • 类型系统
    类型系统将缺陷检测问题转化为类型检查问题,即检查所有对共享变量的访问是否都有一致性锁保护。若没有,则该访问类型为非法类型,可能会构成数据竞争等并发缺陷。
  • 模式定义
    模式定义是指人工指定或预先定义好模式,然后通过静态分析自动推断原子性区域、原子变量集或错误交互点。该方法主要针对非死锁缺陷检测,具有漏报率较低的优势,但是扩展性较差。
  • 符号执行
    符号执行是一种使用符号值代替具体值来执行程序的技术,是一种基于路径的程序分析方法,它使用数学和逻辑符号对程序进行抽象,具有普遍性和严格性。
  • 模型检测
    模型检测是一种验证有限状态系统时序逻辑属性的形式化方法。首先将软件构造为状态机等抽象模型,然后使用模态/时序逻辑公式等形式化的表达式来描述安全属性,最终对模型进行遍历以验证软件是否满足安全属性,从而判断是否存在缺陷。
2. 动态分析
  • 基于不变量分析
    不变量是程序正确执行期间维持的某些性质,反映了编程人员对程序行为的意图。Liblit将不变量分为3类:基于特征的不变量、基于关系的不变量和基于值的不变量。Shi提出了定义使用不变量,捕获定义引用间的内在联系
  • 缺陷模式识别技术
    缺陷模式识别是根据预先定义的缺陷模式动态推断识别原子性区域或不可序列化的交错执行。该技术具有人工干预少、扩展性好等优点,但漏报率比较高。
  • 预测轨迹分析技术
    为了更早地检测软件缺陷。首先记录一条程序的正常执行轨迹,然后在满足某些调度约束的前提下将路径中的事件重排列,以检测未暴露的并发缺陷。该技术可以预测并揭露未经历过的执行路径中的并发缺陷,因而漏报率较低;此外,该技术基于动态收集到的路径进行分析,因而误报率较低。然而,状态空间爆炸问题使得该技术难以扩展到较长轨迹。
  • 动态监视技术
    动态监视技术在程序运行时监视多线程的交错情况,识别共享变量和交错访问等信息。该技术的误报率低,但程序运行的不确定性导致了漏报率非常高。
  • 执行控制技术
    在程序运行时控制线程调度,使得并发缺陷容易暴露出来。该技术增大了缺陷暴露的概率,因此漏报率较低,但执行开销较高。
  • 锁集法
    锁集法检查多个线程对同一个共享变量的访
    问是否持有相同锁。如果没有共同锁保护共享资源,则可能因交错执行而产生并发缺陷。在给定精确信息的情况下,锁集法可以检测多种并发缺陷。但是,该方法忽略了除锁之外的其他同步原语(如signal/wait/fork/join等),因而会有较高的误报率。
  • 先发生于法
    先发生于法基于Lamport的先发生于关系。如果2个线程同时访问一个共享内存,且是因果无序的,则认为可能会发生竞争。先发生于法没有误报,然而,由于交互敏感性,其检测能力弱于锁集法,会出 现漏报。此外,该方法实现比较困难,扩展性较差。
  • 混合法
    混合法结合两种或两种以上方法的优点,以达到更好的检测效果,误报率和漏报率都相对较低。
3. 动静结合

  动静结合的分析技术结合了动态分析的准确性和静态分析的完备性。静态分析为动态分析运行时验证减少了负载;动态分析为静态分析提供了可靠性保证。

  • 数据流分析+执行控制技术
    可以有效提高方法的精度,降低方法的误报率和漏报率。同时,数据流分析为后期执行控制技术指引了方向,可以大大缩短并发缺陷检测的时间,提高方法的性能。
  • 数据流分析+锁集法
    有利于降低漏报率,提高方法的性能,但仍有较高的误报率。
  • 模式定义+动态监视技术
    具有较高的人工干预度,可扩展性较差,且具有较高的运行负载;但是,该方法可以在一定程度上降低误报率。
  • 模式定义+执行控制技术
    首先预指定检测的模式类
    型,静态识别并推断可能的并发错误交互点,然后添加随机延时扰动控制线程 执 行,以检测并发缺陷。
四、 并发缺陷检测技术的通用性分析

在这里插入图片描述
1)对高级并发缺陷中并发类型状态缺陷的研究方法较为单一。低级并发缺陷研 究 中,大多数方法集中在对数据竞争和原子性违背的检测,死锁和顺序违背次之。

2)符号执行和预测轨迹分析技术的通用性最好,可以检测5种并发缺陷,其次是模型检测和执行控制技术。

3)数据流分析技术主要用于检测死锁、数据竞争和原子性违背。模式定义方法主要用于检测底层内存访问中的非死锁并发缺陷。

4)并发缺陷检测研究中,动态分析被广泛应用。其中,针对数据竞争和原子性违背,常采用动态监视、执行控制技术、锁集法、先发生于法或混合法。

5)模型检测技术通过验证软件是否满足多种安全属性来判断是否存在缺陷,因此,也可以检测多种并发缺陷。但是,空间爆炸问题限制了该方法无法适用于大型并发应用程序中。

6)动静结合方法可以中和动态分析和静态分析的优缺点,多适用于数据竞争和原子性违背。

五、 研究展望

1)更加通用、准确的并发缺陷检测。已有的并发缺陷检测工具的通用性较差,测试人员必须使用多种缺陷检测工具对同一个软件进行多次检测。开发更加通 用、准 确 的 并 发 缺 陷 检 测 工 具,有利于提高测试效率。

2)软硬件相结合的并发缺陷检测。纯软件对硬件平台没有特殊要求,适用性较强,但会降低并发程序的运行速度;纯硬件方法可以降低执行开销,但需要修改当前的体系结构,可用性较差,而且不同种类的并发缺陷需要设计不同的硬件和缓存协议。

3)并发缺陷检测及修复一体化。已有研究多集中于单独检测或单独修复并发缺陷。但是有的修复依赖于检测结果,一体化后及时发现检测的错误就不会错误地修复。

4)适用于更加松散的内存模型的并发缺陷检测。顺序一致性模型过于理想化,抑制了在硬件和编译器上的一些性能优化功能。设计并开发更多适用于弱内存模型的并发缺陷检测工具,将是学术界和工业界深入研究的一个重大问题。

5)推广在安卓等其他应用平台的并发缺陷研究。 安卓平台是事件驱动并基于多线程架构的,且需要随时监听多种类型的事件。

6)深入对分布式系统非确定性并发缺陷的研究。分布式软件已超越了单机软件,以数据为中心的分布式系统的可靠性遭受着非确定性并发缺陷的严重威胁,如何将研 究成果合理地应用到对分布式并发缺陷的研究中,并探索新的研究方法进行分布式系统非确定性并发缺陷的检测、诊断和修复,将是未来需要关注的一个重要研究问题。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值