本发明专利技术公开了一种死锁检测验证方法,包括:提取出待测进程的状态、状态转移关系;建立不同的死锁检测模板;将进程的状态、状态转移关系以及建模属性按照类别分别写入XML配置文件;读取XML配置文件,选择相应的死锁检测模板进行模型检测:生成时态逻辑表达式CTL,将进程的状态和状态转移关系及时态逻辑表达式CTL转换为SMV模型;执行SMV模型,分析执行结果中时态逻辑表达式CTL的真值,判断设计文档是否包含死锁。本发明专利技术通过自动分析死锁检测相关信息的输入自动选择相应模板转换为SMV模型的原型,降低了死锁检测的难度;本方法不受软件开发语言限制,可以在系统设计阶段对设计方案进行死锁检测,比在软件开发阶段再发现死锁更能减少不必要的损失。
【技术实现步骤摘要】
本专利技术涉及软件设计
,具体为。
技术介绍
死锁是并发系统中比较常见的软件设计缺陷,也是非常典型的解决并发安全所需 关注的问题。死锁的发生会导致程序无限等待或资源严重消耗,使整个系统没有可用资源 而陷于瘫痪,严重影响系统安全性和可靠性。 SMV工具是美国CMU计算机学院的L.McMillan博士于1992年开发出的模型检验 工具软件,它基于符号模型检验(SymbolicModelChecking)技术,目前为国际上广为流行 的分析有限状态系统的常用工具,SMV有多个版本,如:CMU-SMV、Cadence-SMV、NuSMV等。 死锁检测的方法主要可以分为静态和动态两大类。静态方法最基本的是代码检 查,而所有直接在源程序上做静态死锁检测的技术,都会使用静态程序分析技术。静态程序 分析技术是对并发程序的源代码或者规格说明进行人工或者自动化分析,然后通过分析获 得程序各个模块的数据依赖关系。静态方法能取得一定的效果,但如果出现并发缺陷如死 锁和活锁,其产生来源于特定的程序状态,而且并发软件状态空间非常庞大,这就会使得以 人工为主的代码检查难以胜任。 动态方法则是通过并发程序在真实环境或模拟环境中运行,通过检测软件对运行 信息进行收集,然后利用收集到的信息进行死锁检测。动态分析方法可以分为测试和监控 两大类。动态方法只能覆盖到有限的软件运行情况,对于死锁这类出现概率低的缺陷,并不 能有效的检测。 模型检测是静态死锁检测方法中的一种,基本方法是使用并发的模型来描述系 统,在模型验证时如果模型处于某个非终止状态且没有可达的后继状态时,则发现了死锁。 对于模型检测来说,因为并发软件各并发进程之间庞大的交织状态空间,使得模型过于庞 大复杂,难以手动构造。所以除了状态空间爆炸问题外,模型的构造也是需要解决的问题。
技术实现思路
针对上述问题,本专利技术的目的在于提供,该方法可以在系 统设计阶段对设计方案进行死锁检测,比较容易发现并发缺陷。技术方案如下: ,包括: 从并发系统设计文档中提取出待测进程的状态、状态转移关系; 根据进程的执行方式及并发控制中的项目建立不同的死锁检测模板; 将进程的状态、状态转移关系以及建模属性按照类别分别写入XML配置文件; 读取XML配置文件,选择相应的死锁检测模板进行模型检测:分析进程的状态及 状态转移关系,生成时态逻辑表达式CTL,将进程的状态和状态转移关系及时态逻辑表达式 CTL转换为SMV模型; 执行SMV模型,并将执行结果存入文本文档; 读取文本文档,分析执行结果中时态逻辑表达式CTL的真值; 根据通过算法分析CTL的真值判断设计文档是否包含死锁: 若时态逻辑表达式CTL为TRUE,则设计文档没有产生死锁; 若时态逻辑表达式CTL为FALSE,则设计文档产生死锁。 进一步的,所述死锁检测模板建立的方法包括: 将进程同步执行和异步执行抽象为第一组的两个模型检测模板; 将并发控制中的条件变量、互斥锁和信号变量抽象为第二组的三个模型检测模 板; 将第一组中的模型检测模板和第二组中的模型检测模板一一组合生成六个死锁 检测模板。 更进一步的,还包括:若设计文档产生死锁,则输出产生死锁的执行路径。 更进一步的,还包括选择模型检测工具NuSMV作为模型检测的建模和验证工具。 本专利技术的有益效果是:本专利技术通过自动分析死锁检测相关信息的输入自动选择相 应模板转换为SMV模型的原型,降低了死锁检测的难度;本方法不受软件开发语言限制,可 以在系统设计阶段对设计方案进行死锁检测,比在软件开发阶段再发现死锁更能减少不必 要的损失。【附图说明】 图1为本专利技术死锁检测验证方法的流程框图。【具体实施方式】 下面结合具体实施例对本专利技术做进一步说明。提出了一种基于模型检测工具 NuSMV对死锁进行检测的方法,本方法能够有效的对同步和异步这两种模式下的信号量、条 件变量、互斥锁机制引发的死锁进行检测,并且可以在系统架构设计阶段就可对抽象出的 并发信息进行死锁检测,无需获取源代码。 选择模型检测工具NuSMV作为模型检测的建模和验证工具,并借助于NuSMV对状 态空间的穷举搜索,对设计模板进行验证。在设计时选取XML文件作为中间载体对相关信 息存储,对用户输入的建模属性和状态转移关系按类别输入到XML文件当中,然后针对生 成的XML文件再次读取,对属性分析处理然后转换成NuSMV可识别的SMV模型。 在基于NuSMV进行死锁检测时可以对进程同步执行和异步执行抽象为两个模型 检测模板,在对并发控制中使用条件变量、互斥锁和信号量又可以抽象为3个模型检测模 板,这样针对同步和异步以及这两种模式下的条件变量、互斥锁和信号量总共可以抽象出6 个针对不同模式的死锁检测模板,只需根据并发模式把并发进程的状态及状态转移关系相 关信息输入到算法,就会自动转换为用于死锁检测的SMV模型。 具体过程如下: 1.建立模型:从并发系统设计文档中提取出待测进程的状态及状态转移关系。 2.根据进程的执行方式及并发控制中的项目建立不同的死锁检测模板。 具体在步骤为: 将进程同步执行和异步执行抽象为第一组的两个模型检测模板; 将并发控制中的条件变量、互斥锁和信号变量抽象为第二组的三个模型检测模 板; 将第一组中的模型检测模板和第二组中的模型检测模板一一组合生成六个死锁 检测模板。 3.将进程的状态、状态转移关系以及建模属性按照类别分别写入XML配置文件。 这样可以根据XML配置文件的属性名称更容易区分状态和转移关系。 4.读取XML配置文件,根据XML配置文件中的属性名称获取进程的状态及状态转 移关系。根据获得的并发类型自动选择相应死锁检测模板,然后进行模型检测:分析进程的 状态及状态转移关系,根据临界区状态生成用于验证死锁的时态逻辑表达式CTL,将进程的 状态和状态转移关系及时态逻辑表达式CTL转换为NuSMV可执行的SMV模型。 5.通过自动化执行SMV模型,并将执行结果存入文本文档。 6.读取文本文档,通过算法分析执行结果中时态当前第1页1 2 本文档来自技高网...
【技术保护点】
一种死锁检测验证方法,其特征在于,包括:从并发系统设计文档中提取出待测进程的状态、状态转移关系;根据进程的执行方式及并发控制中的项目建立不同的死锁检测模板;将进程的状态、状态转移关系以及建模属性按照类别分别写入XML配置文件;读取XML配置文件,选择相应的死锁检测模板进行模型检测:分析进程的状态及状态转移关系,生成时态逻辑表达式CTL,将进程的状态和状态转移关系及时态逻辑表达式CTL转换为SMV模型;执行SMV模型,并将执行结果存入文本文档;读取文本文档,分析执行结果中时态逻辑表达式CTL的真值;根据通过算法分析CTL的真值判断设计文档是否包含死锁:若时态逻辑表达式CTL为TRUE,则设计文档没有产生死锁;若时态逻辑表达式CTL为FALSE,则设计文档产生死锁。
【技术特征摘要】
【专利技术属性】
技术研发人员:杨秋辉,代声馨,张琼宇,孙琳,何洋,杜伊,
申请(专利权)人:四川大学,
类型:发明
国别省市:四川;51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。