CN104267936A - 基于树语义的异步动态下推网络可达性分析方法 - Google Patents
基于树语义的异步动态下推网络可达性分析方法 Download PDFInfo
- Publication number
- CN104267936A CN104267936A CN201410470378.8A CN201410470378A CN104267936A CN 104267936 A CN104267936 A CN 104267936A CN 201410470378 A CN201410470378 A CN 201410470378A CN 104267936 A CN104267936 A CN 104267936A
- Authority
- CN
- China
- Prior art keywords
- general layout
- state
- automat
- tree
- under
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
基于树语义的异步动态下推网络可达性分析方法属于软件安全、可靠性技术领域,其特征在于将树语义引入到异步动态下推网络中,通过构建一个中间模型模拟模型的树语义,并采用上下文限界方法使模型的可达性为可判定,计算有限的k次上下文执行内的可达格局集合,通过计算可达格局集合与目标格局集合的交集是否为空,判断出目标格局集合是否可达,从而确定程序的抽象模型中是否存在设计错误或漏洞,保证模型的正确与可靠。
Description
技术领域
本发明属于软件安全性、可靠性研究领域,涉及并发程序的验证方法,具体是一种并发程序抽象模型的可达性求解技术,针对一个异步动态下推网络模型,构造一个中间模型来模拟树语义执行方式,采用上下文限界技术对模型的逆向可达问题进行求解的一种自动化方法。
背景技术
随着多核处理器的发展,对并发程序的研究已成为程序设计的热点。然而并发程序执行的不确定性,导致传统测试方法很难发现程序中隐匿的错误。模型检验作为一种自动验证技术,已成为保证并发程序安全性与可靠性的重要手段之一。可达性分析通过分析某一状态是否可达来判定程序的正确性,是模型检验的重要核心技术。
通常,并发程序使用并发下推系统或并行过程调用建模,然而这两种模型都不能很好的模拟带有动态线程创建的程序。Bouajjani等人于2005年提出了动态下推网络,适用于含有递归过程或带有线程动态创建的并发程序建模(A.Bouajjani,M.Müller-Olm,T.Touili.Regularsymbolic analysis of dynamic networks of pushdown systems.Proceedings of the 16th InternationalConference on Concurrency Theory.LNCS 3653,San Francisco:Cisco Syst,2005,473-487),其模型的集合保持正则性质(Regularity),可分析位向量问题(bitvector problem)和逆向可达问题。通常动态下推网络的执行语义为交错语义,但交错语义下进行逆向可达分析效率不高,为了高效的进行逆向可达分析,Lammich等人于2009年提出了动态下推网络的树语义,将程序的执行建模为一棵树状形式,更符合程序的实际运行,并给出了树语义下的动态下推网络的可达性分析方法,但没有考虑线程之间相互通信(P.Lammich,M.Müller-Olm,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 ofmultithreaded software with asynchronous communication.In Proc.of FSTTCS 2005,LNCS3821,Hyderabad:Springer,2005,348-359)。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.Wenner.Weighted dynamic pushdown networks.Programming Languages and Systems,LNCS6012,Heidelberg:Springer,2010,590–609)。
发明内容
本发明目的在于提供一种针对异步动态下推网络的可达性求解方法,所述异步动态下推网络为一种并发程序的抽象模型,通过对此模型的某些错误状态或者格局的可达性判定分析,确定模型的执行是否会运行到错误状态,从而检测出此模型中的错误或漏洞。
本发明研究基于异步动态下推网络的可达性问题。通常异步动态下推网络的执行语义为交错语义,但交错语义下进行逆向可达分析效率不高,为了高效的进行逆向可达分析,引入树语义到模型中。再通过采用上下文限界方法使模型的可达性为可判定,并对其进行逆向可达分析,最后在此模型上给出了基于树语义的上下文限界逆向可达算法。算法中构造一个中间模型来模拟树语义执行方式,穷尽地计算k次上下文切换内中间模型的逆向可达格局,通过投影操作得出原模型上的逆向可达格局集合。最后对目标格局集合与可达格局集合的交集进行判空,从而解决异步动态下推网络的可达性问题。
为实现上述目的,本发明采取以下技术方案:
整个技术方案包括以下四个步骤:
步骤(1)、构造接受异步动态下推网络树语义下迁移序列的hedge-自动机,通过构造中间模型来模拟树语义执行方式,中间模型具体的构造方法是将hedge-自动机状态和对应的模型局部状态合并为新状态;
步骤(2)、计算此中间模型的K个上下文内的逆向可达格局集合;
步骤(3)、通过投影操作得出原模型下的逆向可达格局集合;
步骤(4)、目标可达性的判定分析。
本发明的特征在于:是一种并发程序的软件可靠性、安全性的验证方法。本发明提出的基于树语义的异步动态下推网络的可达性分析方法,首次在异步动态下推网络的树语义下实现了可达性判定方法。可有效地检测模型中的错误,无需用户过多参与,实现了模型可达性求解的自动化检验,而且格局计算过程简单而有效,并且本发明提出的方法是可判定的,复杂度为O(|G|k-1×|Q3|×|△|)。
附图说明
图1为模型树语义下的执行序列:其中l21,l22、l23表示非动态创建规则,l1表示动态创建规则,L<g,pw>表示叶子节点,spawn表示对应创建的新线程的迁移。
图2为基于树语义的异步动态下推网络逆向可达算法。该算法的详细步骤说明参见步骤(1),(2),(3):其中reachable为可达格局集合。while循环控制k次上下文限界。local()表示异步动态下推网络格局对应到动态下推网络格局的投影操作。Ci存放第i次上下文计算出的格局集合。pre1,M[H]()操作则表示每一个上下文中所有可能的可达格局集合。projT()为投影操作,得出原模型下的格局。
图3为实例分析中模型M的树语义执行序列:此图为一个实例,表示一个程序初始包含有两个线程。例如,图左的线程起初从非动态创建规则规则N l1迁移到动态创建规则S l2,由于S l2是动态创建规则,则其两个后继对应有两个规则(两个线程的迁移规则)N l4、N l3,直到每个线程迁移到叶子节点L<g,p2γ2γ3>,L<g,p1γ3>。
图4为实例分析中接收模型M的树语义执行序列的hedge-自动机:此图为自动机状态迁移图,例如状态s1接收l1迁移到状态s2,状态s2接收迁移l2同时迁移到状态s3状态s4。依次迁移,此自动机接收图3中的迁移序列。
图5本文算法(见图2)的程序流程图。
具体实施方式
一种基于树语义的异步动态下推网络可达性分析方法,其特征在于:是一种并发程序的软件可靠性、安全性的验证方法,是在计算机中依次按以下步骤实现的。
步骤(1)、依次按以下步骤构造中间模型,以便模拟树语义的执行方式:
步骤(1.1)构造并发程序的抽象模型——异步动态下推网络M
所述异步动态下推网络M=(G,P,Γ,△l,△g),G是全局状态集合,P是局部状态集合,Γ表示栈符号,Γ*是Γ的幂集,表示栈符号的集合。格局(G,PΓ*)即表示所述中间模型在某一时刻的状态。△l是局部迁移规则集合,包括:表示栈符号为γ的某一为局部状态p经过迁移lp后转化为栈符号集合Γ*中的某一组栈符号w1所对应的局部状态ρ1; 表示栈符号为γ的某一为局部状态p经过迁移lp后同时转化为栈符号组的第一组栈符号组的Γ*中的第一组栈符号w1所对应的局部状态ρ1和第二组栈符号w2所对应的局部状态ρ2,其中ρ,ρ1,ρ2∈P,γ∈Γ,w1,w2∈Γ*;△g是全局迁移规则集合: 表示栈符号为γ的局部状态ρ所处的全局状态g经过迁移lg后转换为全局状态g'下某一栈符号w1所对应的局部状态ρ1;示栈符号为γ的局部状态ρ所处的全局状态g经过迁移lg后同时转换为栈符号组的集合Γ*中的第一组栈符号w1所对应的局部状态ρ1和第一组栈符号w2所对应的局部状态ρ2;其中g,g'∈G,ρ,ρ1,ρ2∈P,γ∈Γ,w1,w2∈Γ*。
异步动态下推网络的格局是并发程序在某时刻的状态,表示为(g,α)∈G×(PΓ*),其中g为全局状态,α是一个字符串表示对应于全局状态g,由几个栈符号各自所对应的n个局部状态为ρn组成的一个字符串,称之为异步动态下推网络格局相应的动态下推网络格局。
异步动态下推网络的格局集合C∈G×(PΓ*),表示栈符号组集合Γ*下的局部状态集合P所对应的各全局状态g的集合G,其中:ρiwi∈PΓ*,(g,α)∈C,i表示一个栈符号组所对应的局部状态的序号。
步骤(1.2)、构造hedge-自动机来接收所述中间模型树语义下的执行序列,其中,hedge-自动机是一种树篱式自动机,树语义下的执行序列称为执行树,步骤如下:
步骤(1.2.1)执行树h是所述中间模型中的迁移序列的集合,迁移规则用表示,适用于表示初始状态仅会有单个线程TM的一个执行树h,此时迁移规则PΓ*>×TM×<g′,ConfN>,表示从栈符号组集合Γ*所对应的局部状态集合经过线程TM后下推到一个用ConfN所对应的动态下推网络格局α所处的全局状态g′时的迁移规则执行树h亦适用于当初始状态含有多个线程TM时,从格局C出发通过执行一组树h迁移到格局C′时的状态,表示为其中h=t1,…,tn,n是执行树中线程TM反映的状态t的序号。当仅有单个线程时,通过动态创建规则L创建新线程,新创建线程的迁移序列对应创建节点S左边的一部分执行树,创建节点S右边的迁移序列对应原来线程。执行树h可以用一个树状的线程TM表示为:TM::=N L TM|S L TMTM|L<G,PΓ*>,其中TM为树状的线程集合;N L TM为非动态创建节点,该节点只有一个孩子,创建规则用字母组合N L表示,后继为TM;S L TMTM为动态创建节点,该节点有两个孩子,创建规则用字母组合S L表示,后继为一个动态创建出的新线程TM和原来的线程TM;L<G,PΓ*>为叶子节点,其对应此线程运行终止时的格局,此时格局为<G,PΓ*>。所述中间模型就是这种树状执行模型,用于判别迁移所属的进程,其中L为线程创建规则,L1对应动态创建规则,L2为非动态创建规则。
步骤(1.2.2)依次按一下步骤用所述hedge-自动机创建执行树h
步骤(1.2.2.1)设定:
hedge-自动机T=(S,A0,D),其中S为有限状态集合;A0为一个的初始自动机,用L(A0)表示自动机A0的接收语言簇,A0∈S*;规则集合D=DL∪DN∪DS,其中DL、DN、DS分别表示叶子节点,非动态创建节点和动态创建节点的迁移规则集合。其中:规则s→A1∈DL表示叶子节点,其中s∈S,自动机A1接收所有格局集合(例如:L(A1)∈(G,(PΓ*)+))。规则表示非动态创建节点,其中s,s′∈S,l∈L。规则表示动态创建节点,其中s,s′,ss∈S,l∈L。
步骤(1.2.2.2)按下述步骤判断执行树h=t1…tn是否被hedge-自动机接收,其中t为线程,t∈TM,TM*为线程组。
步骤(1.2.2.2.1)判断执行树h=t1…tn是否被hedge-自动机的规则集合D模拟。对于叶子节点表示执行树t的叶子节点的状态<g,pw>与自动机的状态s相对应时,应满足规则:
对于各个非动态创建节点nlt:表示非动态创建节点nlt的状态与自动机的状态相对应时,应满足规则以及执行树t与相应的自动机状态s′相对应,表示为labT(s′,t)。
对于各个动态创建节点sltst,表示动态创建节点sltst的状态与自动机的状态相应时应满足规则在下推同时满足非动态创建节点的状态t与自动机的状态s相对应以及动态创建节点的状态ts与自动机的状态ss相对应。其中t∈TM,l∈L,<g,nw>∈(G,PΓ*)。labT(s,t)表示节点在执行树中的状态t与自动机的状态s相对应。符号“=”表示等同于;符号∧表示以及。
步骤(1.2.2.2.2)若满足步骤(1.2.2.2.1)中的情况,则通过规则集合D构造接收执行树h的hedge-自动机,执行树h的全局状态与自动机的所有状态相对应。
表示自动机A接收的语言簇其中表示自动机的所有状态集合。
步骤(1.3)、将hedge-自动机A的状态和对应异步动态下推网络的局部状态相结合组成新状态,实现迁移序列的树语义执行方式:
构造一个异步动态下推网络模型M×A来实现迁移序列在树语义下的执行方式:
M×A=(G,P×S,Γ,L,△l,△g),格局集合其中:
ConfM×A表示对应于所述异步动态下推网络模型M×A对应的动态下推网络的格局集合。
C′×A:={(g,(p1,s1)w1...(pn,sn)wn)|(g,p1w1...pnwn)∈C′∧
其中:si为序号为i的hedge-自动机状态。
所述异步动态下推网络模型M×A的全局迁移规则△g定义如下:
非动态创建规则:
动态创建规则:
所述异步动态下推网络模型M×A的全局迁移规则△l定义如下:
非动态创建规则:
成立,
当且仅当成立。
动态创建规则:
其中:γ′,w′均为结合后的栈符号和栈符号组。
步骤(2)、依次按下述步骤计算所述中间模型的K个上下文内的正则逆向可达格局集合preM[H](C′),其中H为正则的执行树,C′为正则集合,
C′为异步动态下推网络的格局集合,C′=(g,A),α为对应的动态下推网络格局,在该模型M×A中为(p,s)γ,能被自动机A接收。
preM[H](C′)表示模型M下从格局C′出发的逆向可达格局集合,preK,M[H](C′)表示模型M下从格局C′出发的K-上下文限界逆向可达格局集合。
步骤(2.1)、计算从格局C′出发的没发生上下文切换的逆向格局集合pre1,M[H](C′)
步骤(2.1.1)定义格局之间的迁移关系为
两个局部格局u和v之间的迁移关系为其中:
属于规则集合△l,且u=u1ργu2,v=u1ρ1w1u2,g=g',或者
属于规则集合△l,且u=u1ργu2,v=u1ρ2w2ρ1w1u2,g=g',或者
属于规则集合△g,且u=u1ργu2,v=u1ρ1w1u2,或者
且u=u1ργu2,v=u1ρ2w2ρ1w1u2;
其中u1∈(PΓ*)*,u2∈Γ*(PΓ*)*。全局迁移规则集合和局部迁移规则集合构成了整个迁移系统。
中间模型M×A对应的动态下推网络自动机A接收字符串u1(p,s)u2,那么即可构造自动机Z接收一个符号串u1(g,(p,s))u2,其中u1(p,s)u2∈L(A),u1∈((P,S)Γ*)*,p∈P,u2∈Γ*((P,S)Γ*)*。
接着可按下式构造出一个自动机Zpre*接收所述hedge-自动机Z的逆向可达格局集合,其中,单个上下文中的逆向可达格局为:
其中栈符号组w都属于hedge-自动机Zpre*的接收语言簇中,具体包括栈符号组w=upu′和u(g′,p)u′。
最后,将计算出的所述Zpre*自动机接收的格局集合放入reachable集合中。
步骤(2.2)计算K-上下文限界逆向可达格局集合preK,M[H](C′)
若(g′,u′)∈pre1,M[H](C′),g′∈G,则按步骤(2.2.1)计算pre1,M[H](g′,u′),
步骤(2.2)、计算K-上下文限界逆向可达格局集合,依此递归计算,直到计算完设定的有限个K个上下文时终止。从而得到中间模型M的K-上下文限界逆向可达格局集合。
步骤(3)、通过投影操作得出原模型下的逆向可达格局集合:
定义投影操作则格局C的投影操作为:
从而得出原模型下的逆向可达格局集合。
步骤(4)、目标可达性的判定分析。
根据所述格局集合C的逆向可达格局集合reachable和初始格局集合I(I为程序初始状态对应的格局集合),计算集合reachable和初始集合I的交集是否为空;
步骤(4.1)、若reachable∩I非空,则经过K次上下文切换的运行,某个目标格局c∈C是可达的。则存在一个起始于初始格局的执行路径能够到达该格局中的状态,进而根据每个进程的运行格局,尝试查找产生错误的原因;
步骤(4.2)、若reachable∩I为空,则经过K次上下文切换的运行,目标格局集合C中的所有格局是不可达的。那么即存在两种可能:
a)经过K次上下文切换的运行,搜索的状态空间覆盖度不足以覆盖到初始状态,此时可以增大K的值并继续求解,直至耗尽所有可用的计算资源;
b)若根据上述步骤仍不能判定目标状态是可达的,则得出结论:在现有计算能力下目标格局是不可能出现的。
本实例针对异步动态下推网络模型应用本发明提出的求解方法进行可达性求解,仅考虑全局变量不变的情况。实例模型如下:
异步动态下推网络M=(G,P,Γ,△l,△g),其中G=(T,F),P=(p1,p2),Γ=(γ1,γ2,γ3),其对应的全局下推规则△g如下所示:
其中g∈G。
程序的初始格局为线程t1和线程t3的初始格局集合I=<g,p1γp3γ4>,要判定格局c′=<g,p2γ2γ3p1γ2p5γ5>是否终将可达?
具体实施步骤如下:
步骤(1)、构造自动机T=(S,A0,D)接收模型的树语义执行序列,见图3。构造hedge-自动机接收模型的树语义执行序列,见图4。构造中间模型M′=(G,P×S,Γ,△l,△g)。
步骤(2)、设定一个常数k=3,计算pre1,M[H](c′)的格局集合c1={<g,(p2,s4)γ(p1,s5)γ2(p5,s9)γ5>,<g,(p2,s6)γ2γ3(p1,s3)γ3γ2(p5,s9)γ5>,<g,(p2,s6)γ2γ3(p1,s5)γ2(p4,s8)γ5>,<g,(p2,s6)γ2γ3(p1,s5)γ2(p3,s7)γ4>}。接着计算第一次上下文切换后的可达格局c2=pre1,M[H](c1)={<g,(p2,s4)γ(p1,s3)γ3γ2(p2,s9)γ5>,<g,(p1,s2)γ1γ2(p5,s9)γ5>,<g,(p1,s1)γ(p5,s9)γ5>,<g,(p2,s4)γ(p1,s3)γ3γ2(p4,s8)γ5>,<g,(p2,s4)γ(p1,s3)γ3γ2(p3,s7)γ4>}。接着计算第二次上下文切换后的可达格局c3=pre1,M[H](c2)={<g,(p2,s4)γ(p1,s3)γ3γ2(p4,s8)γ5>,<g,(p2,s4)γ(p1,s3)γ3γ2(p3,s7)γ4>,<g,(p1,s2)γ1γ2(p4,s8)γ5>,<g,(p1,s2)γ1γ2(p3,s7)γ4>,<g,(p1,s1)γ(p4,s8)γ5>,<g,(p1,s1)γ(p3,s7)γ4>}。此时已经计算完3个上下文内从格局c′出发的所有的逆向可达格局集合。
步骤(3)、对格局集合c1,c2,c3进行投影操作,得到原模型下的逆向可达格局集合{<g,(p2,s4)γ(p1,s5)γ2(p5,s9)γ5>,<g,γ2γ3p1γ3γ2p5γ5>,<g,γ2γ3p1γ2p4γ5>,<g,γ2γ3p1γ2p3γ4>,<g,p2γp1γ3γ2p5γ5>,<g,p1γ1γ2p5γ5>,<g,p1γp5γ5>,<g,p2γp1γ3γ2p4γ5>,<g,p2γp1γ3γ2p3γ4>,<g,p2γp1γ3γ2p4γ5>,<g,p2γp1γ3γ2p3γ4>,<g,p1γ1γ2p4γ5>,<g,p1γ1γ2p3γ4>,<g,p1γp4γ5>,<g,p1γp3γ4>}。
步骤(4)、将初始格局集合I与步骤3计算出来的格局集合进行交集运算。得出交集为<g,p1γp3γ4>,所以格局c′可达。
上述实施实例,仅为对本发明的目的、技术方案进一步详细说明的具体个例,本发明并非限定于此。凡在本发明的公开的范围之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围之内。
Claims (1)
1.一种基于树语义的异步动态下推网络可达性的分析方法,其特征在于:是一种并发程序的软件可靠性、安全性的验证方法,是在计算机中依次按以下步骤实现的,
步骤(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,tm为全局状态为m的线程,tm∈TM*,
步骤(1.2.3.2.1)判断执行树h是否被hedge-自动机A的迁移规则集合D模拟,
对执行树h的叶子节点而言:叶子节点的全局状态<g,pw>与hedge-自动机A的全局状态s相对应时应满足规则:s→A1∈DL,表示为:
对各个非动态创建节点N L1TM而言:非动态创建节点N L1TM的状态与hedge-自动机A的状态相对应时应满足规则:并且满足hedge-自动机A的全局状态s′与执行树t相对应,即labT(s′,t),上述条表示为:其中t∈TM,l1∈L1,
对各个非动态创建节点S L2TMTM而言:动态创建节点S L2TMTM的状态与hedge-自动机A的状态相应时应满足规则:并且在下推同时满足非动态创建节点的状态t与hedge-自动机A的全局状态s相对应(即labT(s′,t)),以及动态创建节点的状态ts与hedge-自动机A的全局状态ss相对应(即labT(ss,ts)),上述条件表示为 其中t∈TM,l2∈L2,符号“=”表示等同于;符号“∧”表示以及,符号“>”表示同时,
步骤(1.2.3.2.2)若满足步骤(1.2.3.2.1)所述的条件,则通过所述迁移规则集合D构造接收执行树h的hedge-自动机A,hedge-自动机A与所述执行树h的全局状态的各全局状态一一对应,表示为:自动机A接收的语言簇L(A)表示为, 为hedge-自动机的所有状态集合,
步骤(1.3)、把所述hedge-自动机A的状态和对应异步动态下推网络模型M的局部状态相结合组成新的全局状态,实现迁移序列的树语义执行方式:
步骤(1.3.1)构造一个异步动态下推网络模型M×A来实现迁移序列在树语义下的执行方式:
M×A=(G,P×S,Γ,L,△l,△g),其格局集合表示为:其中:
ConfM×A表示所述模型M×A所对应的动态下推网络的格局集合,
C′×A:={(g,(p1,s1)w1...(pn,sn)wn)|(g,p1w1...pnwn)∈C′∧
其中:si为序号为i的hedge-自动机A的状态,
步骤(1.3.2)所述模型M×A的全局迁移规则△g'定义如下:
非动态创建规则:
表示结合后的模型M×A下从格局(g,(p,s)γ')迁移到格局(g',(p',s')w')时时必须满足在模型M中成立,并且满足在自动机A中成立,
动态创建规则:
表示结合后的模型M×A下从格局(g,(p,s)γ')迁移到格局(g′,(p′,s′)w′)并动态产生新的局部格局(ps,ss)ws时必须满足在模型M中成立,并且满足在自动机A中成立,
步骤(1.3.3)所述模型M×A的全局迁移规则△l'定义如下:
非动态创建规则:
成立,
当且仅当成立,
表示结合后的模型M×A下从局部格局(p,s)γ'迁移到局部格局(p',s')w'时时必须满足在模型M中成立,并且满足在自动机A中成立,
动态创建规则:
表示结合后的模型M×A下从局部格局(p,s)γ'迁移到局部格局(p',s')w'并动态产生新的局部格局(ps,ss)ws时必须满足在模型M中成立,并且满足在自动机A中成立,
其中:γ′,w′均为结合后的栈符号或栈符号组,
步骤(2)、依次按下述步骤计算所述模型M×A的K个上下文内的正则逆向可达格局集合preM[H](C′),其中H为正则的执行树,C′为正则集合,
C′为异步动态下推网络的格局集合,preM[H](C′)表示所述异步动态下推网络模型M下从格集合局C′出发的正则逆向可达格局集合,preK,M[H](C′)表示模型M下从格局集合C′出发的K-上下文限界正则逆向可达格局集合,其中:
C′=(g,α),α为hedge-自动机A对应的动态下推网络格局,在该所述异步动态下推网络模型M×A中α=(p,s)γ,异步动态下推网络的格局从(g,α)通过执行树迁移到(g',α'),表示为
步骤(2.1)、按以下步骤计算从所述异步动态下推网络的格局集合C′出发的未发生上下文切换的逆向格局集合pre1,M[H](C′)
步骤(2.1.1)定义格局集合之间的迁移关系:
步骤(2.1.2)两个格局(g,u)和(g',v)之间的迁移关系为其中:
格局的局部迁移规则集合△l定义如下:
成立,当且仅当u=u1ργu2,v=u1ρ1w1u2,g=g'成立,或者
u=u1ργu2,v=u1ρ2w2ρ1w1u2,g=g'成立
格局的全局迁移规则集合△g定义如下:
成立,当且仅当u=u1ργu2,v=u1ρ1w1u2成立,或者且u=u1ργu2,v=u1ρ2w2ρ1w1u2成立;
u,v是指一组栈符号和其所对应的局部状态组成的一个字符串,其中:u1∈(PΓ*)*,u2∈Γ*(PΓ*)*,全局迁移规则集合和局部迁移规则集合构成了整个迁移系统,
步骤(2.1.3)在所述模型M×A中,自动机A接收字符串u1(p,s)u2,构造接收符号串u1(g,(p,s))u2的自动机Z,其中:u1(p,s)u2∈L(A),u1∈((P,S)Γ*)*,p∈P,u2∈Γ*((P,S)Γ*)*,
步骤(2.1.4)可按下式构造接收所述hedge-自动机Z的逆向可达格局集合的自动机Zpre*,其中,单个上下文中的逆向可达格局为:
其中栈符号组w都属于hedge-自动机Zpre*的接收语言簇中,具体包括栈符号组w=upu′和u(g′,p)u′,
步骤(2.1.5)把所述自动机Zpre*接收的单个上下文中逆向可达格局集合pre1,M[H](g,u)放入reachable集合中,
步骤(2.2)计算K-上下文限界逆向可达格局集合preK,M[H](C′)
步骤(2.2.1)若(g′,u′)∈pre1,M[H](C′),g′∈G,重复步骤(2.1.3)到步骤(2.1.5)计算pre1,M[H](g′,u′),
步骤(2.2.2)、重复步骤(2.2.1)K次,直到计算完设定的有限个K个上下文时终止,即可计算出K-上下文限界逆向可达格局集合,从而得到模型M×A的K-上下文限界逆向可达格局集合preK,M[H](C′),K为设定的有限正整数,
步骤(3)、通过投影操作得出所述异步动态下推网络下的逆向可达格局集合:
定义投影操作projH:则:格局C的投影操作为projH(C):
符号“→表示转换,从而得出原模型下的逆向可达格局集合,
步骤(4)、目标可达性的判定分析,
根据所述格局集合C的逆向可达格局集合reachable和初始格局集合I(I为程序初始状态对应的格局集合),计算集合reachable和初始集合I的交集是否为空;
步骤(4.1)、若reachable∩I非空,则经过K次上下文切换的运行,某个目标格局c∈C是可达的,则存在一个起始于初始格局的执行路径能够到达该格局中的状态,进而根据每个进程的运行格局,尝试查找产生错误的原因;
步骤(4.2)、若reachable∩I为空,则经过K次上下文切换的运行,目标格局集合C中的所有格局是不可达的,那么即存在两种可能:
1)经过K次上下文切换的运行,搜索的状态空间覆盖度不足以覆盖到初始状态,此时通过增大K的值并继续求解,直至耗尽所有可用的计算资源;
2)若根据上述步骤仍不能判定目标状态是可达的,则得出结论:在现有计算能力下目标格局是不可能出现的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410470378.8A CN104267936B (zh) | 2014-09-16 | 2014-09-16 | 基于树语义的异步动态下推网络可达性分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410470378.8A CN104267936B (zh) | 2014-09-16 | 2014-09-16 | 基于树语义的异步动态下推网络可达性分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104267936A true CN104267936A (zh) | 2015-01-07 |
CN104267936B CN104267936B (zh) | 2017-10-17 |
Family
ID=52159460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410470378.8A Active CN104267936B (zh) | 2014-09-16 | 2014-09-16 | 基于树语义的异步动态下推网络可达性分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104267936B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183652A (zh) * | 2015-09-14 | 2015-12-23 | 桂林电子科技大学 | 时间动态下推网络的转换方法 |
CN106940659A (zh) * | 2017-03-09 | 2017-07-11 | 华东师范大学 | 基于加权下推系统的中断验证方法 |
CN108021746A (zh) * | 2017-11-29 | 2018-05-11 | 北京化工大学 | 一种基于依赖关系的efsm模型事件失效修复方法 |
CN109739773A (zh) * | 2019-01-21 | 2019-05-10 | 华东师范大学 | 基于下推系统的gpu并行ctl模型检查方法 |
CN109814928A (zh) * | 2019-01-21 | 2019-05-28 | 华东师范大学 | 基于下推系统的gpu并行ctl模型检查系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080086722A1 (en) * | 2006-07-12 | 2008-04-10 | Nec Laboratories America | Using pushdown systems for the static analysis of multi-threaded programs |
CN102141959A (zh) * | 2011-03-15 | 2011-08-03 | 中国科学院研究生院 | 一种受上下文无关文法约束的测试用例生成方法 |
CN102929781A (zh) * | 2012-11-12 | 2013-02-13 | 桂林电子科技大学 | 基于上下文定界的队列通信并发递归程序验证方法 |
-
2014
- 2014-09-16 CN CN201410470378.8A patent/CN104267936B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080086722A1 (en) * | 2006-07-12 | 2008-04-10 | Nec Laboratories America | Using pushdown systems for the static analysis of multi-threaded programs |
CN102141959A (zh) * | 2011-03-15 | 2011-08-03 | 中国科学院研究生院 | 一种受上下文无关文法约束的测试用例生成方法 |
CN102929781A (zh) * | 2012-11-12 | 2013-02-13 | 桂林电子科技大学 | 基于上下文定界的队列通信并发递归程序验证方法 |
Non-Patent Citations (1)
Title |
---|
钱俊彦 等: "基于上下文定界的Fork/Join并行性的并发程序可达性分析", 《计算机工程与科学》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183652A (zh) * | 2015-09-14 | 2015-12-23 | 桂林电子科技大学 | 时间动态下推网络的转换方法 |
CN105183652B (zh) * | 2015-09-14 | 2018-01-30 | 桂林电子科技大学 | 时间动态下推网络的转换方法 |
CN106940659A (zh) * | 2017-03-09 | 2017-07-11 | 华东师范大学 | 基于加权下推系统的中断验证方法 |
CN108021746A (zh) * | 2017-11-29 | 2018-05-11 | 北京化工大学 | 一种基于依赖关系的efsm模型事件失效修复方法 |
CN109739773A (zh) * | 2019-01-21 | 2019-05-10 | 华东师范大学 | 基于下推系统的gpu并行ctl模型检查方法 |
CN109814928A (zh) * | 2019-01-21 | 2019-05-28 | 华东师范大学 | 基于下推系统的gpu并行ctl模型检查系统 |
CN109814928B (zh) * | 2019-01-21 | 2021-01-29 | 华东师范大学 | 基于下推系统的gpu并行ctl模型检查系统 |
CN109739773B (zh) * | 2019-01-21 | 2021-01-29 | 华东师范大学 | 基于下推系统的gpu并行ctl模型检查方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104267936B (zh) | 2017-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kantaros et al. | Sampling-based optimal control synthesis for multirobot systems under global temporal tasks | |
CN102929781B (zh) | 基于上下文定界的队列通信并发递归程序验证方法 | |
CN104267936A (zh) | 基于树语义的异步动态下推网络可达性分析方法 | |
CN104699883A (zh) | 采用紧凑多波形表示的电路设计评估 | |
de Groote et al. | Max-plus algebraic throughput analysis of synchronous dataflow graphs | |
CN107632590B (zh) | 一种基于优先级的底事件排序方法 | |
CN107609141A (zh) | 一种对大规模可再生能源数据进行快速概率建模方法 | |
CN105786715A (zh) | 一种程序静态自动分析方法 | |
Mittal et al. | Theory and Practice of M & S in Cyber Environments | |
Pujol-Perich et al. | Ignnition: Bridging the gap between graph neural networks and networking systems | |
CN103942147A (zh) | 一种线性拟合函数驱动的测试数据自动生成方法 | |
CN104734870A (zh) | 一种基于元胞自动机的软件故障传播方法 | |
CN107704235A (zh) | 图形化建模中数据流程图的解析方法、系统及存储介质 | |
US8849626B1 (en) | Semantic translation of stateflow diagrams into input/output extended finite automata and automated test generation for simulink/stateflow diagrams | |
Vörös et al. | Industrial applications of the PetriDotNet modelling and analysis tool | |
Barnat et al. | Executing model checking counterexamples in Simulink | |
CN105183652B (zh) | 时间动态下推网络的转换方法 | |
CN103973483A (zh) | 基于网论的网络服务组合的分析方法 | |
Olson et al. | Hardware/software partitioning using bayesian belief networks | |
Zboril Jr et al. | Simulation for Wireless Sensor Networks with Intelligent Nodes | |
Cortés | A Petri net based modeling and verification technique for real-time embedded systems | |
Bachmann et al. | An efficient symbolic elimination algorithm for the stochastic process algebra tool CASPA | |
CN104657542A (zh) | 一种基于MSVL的Petri网模型检测方法 | |
Pullum et al. | Verification of adaptive systems | |
Pham et al. | On optimization of minimized assumption generation method for component-based software verification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |