基于树语义的异步动态下推网络可达性分析方法技术

技术编号:10867126 阅读:122 留言:0更新日期:2015-01-07 08:14
基于树语义的异步动态下推网络可达性分析方法属于软件安全、可靠性技术领域,其特征在于将树语义引入到异步动态下推网络中,通过构建一个中间模型模拟模型的树语义,并采用上下文限界方法使模型的可达性为可判定,计算有限的k次上下文执行内的可达格局集合,通过计算可达格局集合与目标格局集合的交集是否为空,判断出目标格局集合是否可达,从而确定程序的抽象模型中是否存在设计错误或漏洞,保证模型的正确与可靠。

【技术实现步骤摘要】

本专利技术属于软件安全性、可靠性研究领域,涉及并发程序的验证方法,具体是一种 并发程序抽象模型的可达性求解技术,针对一个异步动态下推网络模型,构造一个中间模 型来模拟树语义执行方式,采用上下文限界技术对模型的逆向可达问题进行求解的一种自 动化方法。
技术介绍
随着多核处理器的发展,对并发程序的研究已成为程序设计的热点。然而并发程 序执行的不确定性,导致传统测试方法很难发现程序中隐匿的错误。模型检验作为一种自 动验证技术,已成为保证并发程序安全性与可靠性的重要手段之一。可达性分析通过分析 某一状态是否可达来判定程序的正确性,是模型检验的重要核心技术。 通常,并发程序使用并发下推系统或并行过程调用建模,然而这两种模型都不能 很好的模拟带有动态线程创建的程序。Bouajjani等人于2005年提出了动态下推网络,适 用于含有递归过程或带有线程动态创建的并发程序建模(A. Bouaj jani, M. Miiller-Olm, T. Touili. Regular symbolic analysis of dynamic networks of pushdown systems. Proceedings of the 16th International Conference on Concurrency Theory. LNCS 3653,San Francisco:Cisco Syst,2005, 473-487),其模型的:集合保持正则性质 (Regularity),可分析位向量问题(bitvector problem)和逆向可达问题。通常动态下 推网络的执行语义为交错语义,但交错语义下进行逆向可达分析效率不高,为了高效的进 行逆向可达分析,Lammich等人于2009年提出了动态下推网络的树语义,将程序的执行 建模为一棵树状形式,更符合程序的实际运行,并给出了树语义下的动态下推网络的可达 性分析方法,但没有考虑线程之间相互通信(P. Lammich,M. Miiller-〇lm,and A. Wenner. Predecessor sets of dynamic pushdown networks with tree-regular constraints. In Proc. of ICCAV2009,LNCS 5643,Grenoble:ArtistDesign,2009,525-539)。Bouajjani 在动态下推网络模型基础上提出了异步动态下推网络模型,能建模线程基于共享内存 的异步通信,但其可达性问题是不可判定的(A. Bouajjani,J. Esparza,S. Schwoon,and J. Strejcek. Reachability analysis of multithreaded software with asynchronous communication.In Proc. of FSTTCS 2005, LNCS3821,Hyderabad:Springer,2005, 348-3 59)。Faouzi于2009年提出针对带动态线程创建程序的上下文限界分析方法,并证明其 是可判定的(M. Faouzi Atig, A. Bouajjani, and S. Qadeer. Context-bounded analysis for concurrent programs with dynamic creation of threads. 15thInternational Conference on TACAS LNCS 5505,Univ York:European Assoc,2009, 107-123)。 Wenner 于2010年将动态下推网络扩展到加权动态下推网络,增强了模型的建模能力(A. Wermer. Weighted dynamic pushdown networks. Programming Languages and Systems, LNCS6012, Heidelberg:Springer,2010, 590 - 609)。
技术实现思路
本专利技术目的在于提供一种针对异步动态下推网络的可达性求解方法,所述异步动 态下推网络为一种并发程序的抽象模型,通过对此模型的某些错误状态或者格局的可达性 判定分析,确定模型的执行是否会运行到错误状态,从而检测出此模型中的错误或漏洞。 本专利技术研究基于异步动态下推网络的可达性问题。通常异步动态下推网络的执行 语义为交错语义,但交错语义下进行逆向可达分析效率不高,为了高效的进行逆向可达分 析,引入树语义到模型中。再通过采用上下文限界方法使模型的可达性为可判定,并对其进 行逆向可达分析,最后在此模型上给出了基于树语义的上下文限界逆向可达算法。算法中 构造一个中间模型来模拟树语义执行方式,穷尽地计算k次上下文切换内中间模型的逆向 可达格局,通过投影操作得出原模型上的逆向可达格局集合。最后对目标格局集合与可达 格局集合的交集进行判空,从而解决异步动态下推网络的可达性问题。 为实现上述目的,本专利技术采取以下技术方案: 整个技术方案包括以下四个步骤: 步骤(1)、构造接受异步动态下推网络树语义下迁移序列的hedge-自动机,通过 构造中间模型来模拟树语义执行方式,中间模型具体的构造方法是将hedge-自动机状态 和对应的模型局部状态合并为新状态; 步骤(2)、计算此中间模型的K个上下文内的逆向可达格局集合; 步骤(3)、通过投影操作得出原模型下的逆向可达格局集合; 步骤(4)、目标可达性的判定分析。 本专利技术的特征在于:是一种并发程序的软件可靠性、安全性的验证方法。本专利技术提 出的基于树语义的异步动态下推网络的可达性分析方法,首次在异步动态下推网络的树语 义下实现了可达性判定方法。可有效地检测模型中的错误,无需用户过多参与,实现了模型 可达性求解的自动化检验,而且格局计算过程简单而有效,并且本专利技术提出的方法是可判 定的,复杂度为0(|6|Ηχ |Q3| X | Λ |)。 【附图说明】 图1为模型树语义下的执行序列:其中121,122、1 23表示非动态创建规则,li表示 动态创建规则,L〈g, pw>表示叶子节点,spawn表示对应创建的新线程的迁移。 图2为基于树语义的异步动态下推网络逆向可达算法。该算法的详细步骤说明参 见步骤(1),(2),(3):其中reachable为可达格局集合。while循环控制k次上下文限界。 local ()表示异步动态下推网络格局对应到动态下推网络格局的投影操作。Q存放第i次 上下文计算出的格局集合。prei, M[H]()操作则表示每一个上下文中所有可能的可达格局集 合。projT()为投影操作,得出原模型下的格局。 图3为实例分析中模型Μ的树语义执行序列:此图为一个实例,表示一个程序初始 包含有两个线程。例如,图左的线程起初从非动态创建规则规则Ν 11迁移到动态创建规则 S 12,由于S 12是动态创建规则,则其两个后继对应有两个规则(两个线程的迁移规则)Ν 14、Ν 13,直到每个线程迁移到本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/55/201410470378.html" title="基于树语义的异步动态下推网络可达性分析方法原文来自X技术">基于树语义的异步动态下推网络可达性分析方法</a>

【技术保护点】
一种基于树语义的异步动态下推网络可达性的分析方法,其特征在于:是一种并发程序的软件可靠性、安全性的验证方法,是在计算机中依次按以下步骤实现的,步骤(1)、依次按以下步骤构造一个基于异步动态下推网络的并发程序中间模型,以便模拟树语义的执行方式,步骤如下:步骤(1.1)构造所述的异步动态下推网络的中间模型M,简称模型M,M=(G,P,Γ,△l,△g),其中:G是全局状态集合,P是局部状态集合,Γ是栈符号的集合,Γ*是Γ的幂集,表示栈符号的集合的幂集,格局(G,PΓ*)表示异步动态的格局集合,表示栈符号为幂集Γ*的局部状态集合P所对应的全局状态G的集合,(g,ργ)表示栈符号为γ的局部状态ρ所处的全局状态g,△l是局部迁移规则集合,包括以下迁移规则:表示栈符号为γ的某一局部状态p经过迁移lp后转化为栈符号集合Γ*中的某一组栈符号w1所对应的局部状态ρ1;表示栈符号为γ的某一局部状态p经过局部迁移lp后转化为栈符号组中的第一组栈符号组w1所对应的局部状态ρ1和第二栈符号组w2所对应的局部状态ρ2,△g是全局迁移规则集合,包括以下全局迁移规则:表示栈符号为γ的局部状态ρ所处的全局状态g经过迁移lg后转换为全局状态g'下第一栈符号组w1所对应的局部状态ρ1;示栈符号为γ的局部状态ρ所处的全局状态g经过迁移lg后同时转换为栈符号组的集合Γ*中的第一栈符号组w1所对应的局部状态ρ1和第二栈符号组w2所对应的局部状态ρ2;其中g,g'∈G,ρ,ρ1,ρ2∈P,γ∈Γ,w1,w2∈Γ*,当用C表示所述异步动态下推网络模型M的格局集合(G,PΓ*)时,C=(G,PΓ*),令(g,α)∈C,其中g为全局状态,α是全局状态g中由n个栈符号组wn各自所对应的一个局部状态ρn组成的一个字符串,α称之为所述异步动态下推网络模型M在某一时刻的格局相应的动态下推网络格局,步骤(1.2)、构造一个hedge‑自动机A,也称树篱式自动机,接收所述模型M在树语义下的执行序列,也称为执行树,用h表示,其步骤如下:步骤(1.2.1)定义:所述执行树h是所述模型中由局部迁移规则和全局迁移规则组成的迁移序列集合,所述迁移规则用表示,在初始状态下,仅有单个线程TM时,迁移规则表示为PΓ*>×TM×<g′,ConfN>,其中,×TM×表示“经过TM下推”,执行树是指从栈符号集合Γ*下的一个局部状态集合P所处的全局状态经过单个线程TM后下推到一个符号串ConfN所对应的动态下推网络格局α所处的全局状态g′时的迁移规则所组成的迁移序列集合,同时含有大于一个线程TM时,迁移规则表示从格局C出发通过执行一组执行树h迁移到新格局C′时的状态,表示为其中h=t1,…,ti,..,tn,i指一组执行树h中迁移时的各个线程ti执行所对应的执行树,步骤(1.2.2)利用基于所述迁移序列的线程创建规则L来创建新的线程:对于只有一个孩子节点的非动态创建节点S2′,用非动态创建规则L2来创建新线程,新创建线程的迁移序列对应于所述非动态创建节点S2′左边的一部分执行树,右边的迁移序列则对应于原来的线程所对应的执行树,执行树h用树状的线程组TM表示:TM::=N L1TM|S L2TMTM|L<G,PΓ*>,其中TM为树状的线程集合;N L1TM为非动态创建节点,该节点只有一个孩子,创建规则用字母组合N L1表示,后继为一个新节点TM;S L2TMTM为动态创建节点,该节点有两个孩子,创建规则用字母组合S L2表示,后继为一个动态创建出的新线程TM和原来的线程TM;L<G,PΓ*>为叶子节点,其对应此线程运行终止时的格局,此时格局为<G,PΓ*>,所述中间模型就是这种树状执行模型,用于判别迁移所属的进程,其中L为线程一般迁移规则,L1对应非动态创建规则,L2为动态创建规则,步骤(1.2.3)依次按以下步骤用所述hedge‑自动机A创建执行树h步骤(1.2.3.1),设定:hedge‑自动机A=(S,A0,D),其中S为有限个全局状态的集合,S*是S的幂集;A0为一个的初始自动机,A0∈S*,用L(A0)表示自动机A0的接收的语言簇;D为规则集合,它包括叶子节点的迁移规则集合DL、非动态创建节点的迁移规则集合DN和动态创建节点的迁移规则集合DS,表示为D=DL∪DN∪DS,其中:叶子节点的迁移规则为s→A1∈DL表示,其中s∈S,A1是接收所有格局集合(G,(PΓ*)+)的自动机,非动态创建节点的迁移规则为其中s∈S,s′∈S,l1∈L1,动态创建节点的迁移规则表示,其中s,s′,ss∈S,l2∈L2,符号>表示从状态s同时迁移到状态s'和ss,步骤(1.2.3.2)按下述步骤判断执行树h是否被hedge‑自动机A接收,其中h=t1…,tm,...,tn,...

【技术特征摘要】
1. 一种基于树语义的异步动态下推网络可达性的分析方法,其特征在于:是一种并发 程序的软件可靠性、安全性的验证方法,是在计算机中依次按以下步骤实现的, 步骤(1)、依次按以下步骤构造一个基于异步动态下推网络的并发程序中间模型,以便 模拟树语义的执行方式,步骤如下: 步骤(I. 1)构造所述的异步动态下推网络的中间模型M,简称模型M,M= (G,P,r,A1,Ag),其中: G是全局状态集合,P是局部状态集合,r是栈符号的集合,r*是r的幂集,表示 栈符号的集合的幂集,格局(G,Pr*)表不异步动态的格局集合,表不栈符号为幂集r* 的局部状态集合P所对应的全局状态G的集合,(g,PY)表不栈符号为Y的局部状态 P所处的全局状态g,Ai是局部迁移规则集合,包括以下迁移规则:表示栈符号为Y的某一局部状态P经过迁移Ip后转化为栈符号集合r*中的某一组栈 符号W1所对应的局部状态Pi;表不栈符号为Y的某一局部状 态P经过局部迁移Ip后转化为栈符号组中的第一组栈符号组W1所对应的局部状态Pi和第二栈符号组W2所对应的局部状态P2,Ag是全局迁移规则集合,包括以下全局迁移 规则:表示栈符号为Y的局部状态P所处的全局状态g经 过迁移Ig后转换为全局状态g'下第一栈符号组W1所对应的局部状态Pi; (b)(g,示栈符号为Y的局部状态P所处的全局状态g经过迁移Ig后 同时转换为栈符号组的集合r*中的第一栈符号组W1所对应的局部状态P1和第二栈符号 组W2所对应的局部状态P 2;其中g,g'GG,P,PDP2Gp,YGr,W1, W2Gr*, 当用c表示所述异步动态下推网络模型M的格局集合(G,Pr*)时,c= (G,Pr*),令 (g,a)GC,其中g为全局状态,a是全局状态g中由n个栈符号组Wn各自所对应的一个 局部状态Pn组成的一个字符串,a称之为所述异步动态下推网络模型M在某一时刻的格 局相应的动态下推网络格局, 步骤(1. 2)、构造一个hedge-自动机A,也称树篱式自动机,接收所述模型M在树语义 下的执行序列,也称为执行树,用h表示,其步骤如下: 步骤(1. 2. 1)定义:所述执行树h是所述模型中由局部迁移规则和全局迁移规则组成 的迁移序列集合,所述迁移规则用^表示,在初始状态下,仅有单个线程Tm时,迁移规则 表示为Pr*>XTMX〈g',ConfN>,其中,XTmX表示经过Tm下推,执行树是指从 栈符号集合r*下的一个局部状态集合P所处的全局状态经过单个线程Tm后下推到一个 符号串ConfN所对应的动态下推网络格局a所处的全局状态g'时的迁移规则所组成 的迁移序列集合,同时含有大于一个线程Tm时,迁移规则表示从格局C出发通过执行一 组执行树h迁移到新格局C'时的状态,表示为C;,,C',其中h=&,…,k. .,tn,i指一 组执行树h中迁移时的各个线程^执行所对应的执行树, 步骤(1. 2. 2)利用基于所述迁移序列的线程创建规则L来创建新的线程: 对于只有一个孩子节点的非动态创建节点S2',用非动态创建规则L2来创建新线程, 新创建线程的迁移序列对应于所述非动态创建节点S2'左边的一部分执行树,右边的迁移 序列则对应于原来的线程所对应的执行树, 执行树h用树状的线程组Tm表示:TM: : =NL1TmISL2TmTmIL〈G,Pr*>,其中Tm为树状 的线程集合;NL1Tm为非动态创建节点,该节点只有一个孩子,创建规则用字母组合NL1表 示,后继为一个新节点Tm;SL2TmTm为动态创建节点,该节点有两个孩子,创建规则用字母组 合SL2表示,后继为一个动态创建出的新线程Tm和原来的线程Tm ;L〈G,Pr*>为叶子节点, 其对应此线程运行终止时的格局,此时格局为<G,Pr*>,所述中间模型就是这种树状执行 模型,用于判别迁移所属的进程,其中L为线程一般迁移规则,L1对应非动态创建规则,L2为 动态创建规则, 步骤(1. 2. 3)依次按以下步骤用所述hedge-自动机A创建执行树h步骤(1. 2. 3. 1),设定: hedge-自动机A=KAtl,D),其中S为有限个全局状态的集合,S*是S的幂集;Atl为 一个的初始自动机,AciGS*,用L(Aci)表示自动机Aci的接收的语言簇;D为规则集合,它包 括叶子节点的迁移规则集合、非动态创建节点的迁移规则集合Dn和动态创建节点的迁 移规则集合Ds,表示为D= ^UDnUDs,其中:叶子节点的迁移规则为s-A1G^表示, 其中sGS,A1是接收所有格局集合(G,(Pr*)+)的自动机,非动态创建节点的迁移规则为 ,其中sGS,s'GS,I1GL1,动态创建节点的迁移规则s 表不,其中S,s',ssGs,I2GL2,符号>表不从状态s同时迁移到状态s'和ss, 步骤(1. 2. 3. 2)按下述步骤判断执行树h是否被hedge-自动机A接收,其中h=h…,tm,? ? ?,tn,tm为全局状态为m的线程,tmGTm*, 步骤(1. 2. 3. 2. 1)判断执行树h是否被hedge-自动机A的迁移规则集合D模拟, 对执行树h的叶子节点而言:叶子节点的全局状态<g,pw>与hedge-自动机A的全局状态s相对应时应满足规则:s-A1G队,表示为: k!h!{s,L <g,pw>) <? .v-zi/eD//、<g,/7vv>eI), 对各个非动态创建节点NL1Tm而言:非动态创建节点NL1Tm的状态与hedge-自动机A的状态相对应时应满足规则:eDv,并且满足hedge-自 动机A的全局状态s'与执行树t相对应,S卩labT(...

【专利技术属性】
技术研发人员:钱俊彦曾宇清赵岭忠郭云川李凤英
申请(专利权)人:桂林电子科技大学
类型:发明
国别省市:广西;45

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1