面向程序验证的并行程序状态空间态约简技术综述

来源 :智能计算机与应用 | 被引量 : 0次 | 上传用户:wang218
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:程序验证是保证程序安全性的重要手段。随着采用多核技术的硬件环境日渐普及,越来越多的软件正通过转向基于共享内存的并行程序模型来充分利用现有的计算资源。各线程在并行执行时通过共享内存的访问互相干扰执行状态,导致可能执行路径数成几何级数增长,进而产生可达状态空间爆炸问题。由于验证并行程序安全性主要通过分析程序可达状态来实现,因此,对并行程序可达状态空间的约简是决定并行程序验证效率的关键因素。首先对面向并行程序验证的并行程序可达状态空间约简方法进行了分类,然后对各类可达状态空间约简方法分别进行了分析和总结,最后指出了当前存在的问题和未来解决这些问题的研究方向。
  关键词:程序验证;并行程序分析;可达状态空间约简
  中图分类号:TP311.5 文献标识码:A 文章编号:2095-2163(2015)01-
  Abstract: Program verification is the critical means to ensure the program safety. During the mature of multi-core hardware, there have been many programs which utilize the existed computing resources by adopting the memory shared concurrent program model. The concurrent threads interference with each other via the shared variables, which makes the reachable states increase with exponent factors. As a result, it results in the problem of combination explosion. Because the program verification relies on the reachable states, reducing the reachable state space is the key to the efficiency of program verification. In this paper, the reachable state reduction methods for concurrent program verification are classified, and the different kinds of reducing reachable states are analyzed and summarized. In the end, the issues which are still open are summarized and the future research directions to address these issues are also discussed.
  Key words:Program Verification; Concurrent Program Analysis; Reduction of Reachable States
  0引 言
  多核硬件环境的日益普及使得能够深度挖掘计算资源的并行化软件已然成为软件行业的主流,进而即刻不断满足日渐提高的性能需求和功能需求。其中,基于共享内存的并行程序模型在和基于消息通讯的并行程序相较候可知,该模型具有访问便捷、信息交换开销低廉等优势特点,足可堪称当前主要的并行程序通讯模型,并在航天、武器、交通、核电、医疗和金融等安全攸关领域有着极为广泛且重要的应用。毫无疑问,并行软件的安全性就是影响其应用的关键因素。而程序验证则是保证程序安全性的重要手段, 一般情况下是由描述验证条件的规格说明和计算程序可达状态的分析算法组合构成。程序验证的目的就是旨在通过程序分析来判断程序的可达状态是否满足验证条件。然而,各线程在并行执行时通过共享内存的访问互相干扰执行状态,就将导致可能执行路径数成几何量级增长,进而产生可达状态空间组合爆炸问题,也为验证并行程序安全性制造了攻克难点与挑战。
  在此,并行程序可达状态空间约简可表述为:通过一定规则来合并具有相同或相似可达程序状态路径的搜索策略,由此即可缓解来自组合爆炸导致的复杂计算压力。同时,对并行程序可达状态空间的约简效果还将直接决定对并行程序验证的可实现效率及可应用规模。当前的并行程序可达状态空间约简方法即是从不同角度出发、并采取多样的规则对并行程序中的路径进行明确划分,有效地解决或缓解研究环境中面临的问题,但是,其约简方法却仍将受到其他条件制约。所以,如何进一步整合并行程序可达状态空间的各种约简方法的优点并克服其各自缺点就依然是目前一个亟需深入探讨与解决的开放性问题。
  本文首先对当前的并行程序可达状态空间的约简方法进行介绍,而后又分别就其优点和不足展开相应分析,并基于此再次给出这对这些不足的研究方向综述。
  1并行程序可达状态空间约简方法分类
  并行程序可达状态空间约简的目标是如何有效缓解由交叠执行所导致的状态空间组合爆炸问题。但由于对程序并行性的不同视角则决定了在搜索可达状态空间时的不同约简策略,为此即根据消除并行程序空间状态冗余的不同出发点而将并行程序可达状态空间约简方法具体分为以下四类:偏序关系约简方法、模块性约简方法、对称性约简方法和并行干扰约简方法。下面对这四类约简方法进行逐一的阐述与介绍。
  1.1 偏序关系约简方法
  偏序关系约简是从踪迹的独立性出发,而只搜索可能产生不同程序状态的踪迹。Godefroid就研究了独立变迁的等价关系[1]。两个变迁若称为独立,当且仅当在一条踪迹中这两个临近的变迁调换执行顺序后该踪迹的可达状态不变。鉴于该方法只是分析并行线程交叠执行等价类中的代表踪迹,因而避免了交叠执行等价类内其它踪迹的冗余分析。   近期研究则主要集中在如何提高交叠执行等价类的划分精度。已有研究可知,通过静态分析的方法计算踪迹等价类中的可调度变迁却将占据较大时空开销。为了解决这一问题,Flanagan等即相应提出了动态偏序关系约简[2],通过动态跟踪线程间交叠执行位置来分析发生冲突的回溯点。然而,该方法仍然存在重复访问等价踪迹类内的其他并行状态的可能。为了避免重复访问并行状态问题,分别由Gueta等提出了笛卡儿偏序关系约简[3]和Yang等提出的含有状态的动态偏序关系约简[4],其主要思想是通过识别变迁间的依赖关系来区分可达状态。同时,又依次由Kahlon等提出了单调偏序关系约简[5]和由Abdulla等进一步提出的优化动态偏序关系约简[6],其主要成果则是通过对调度赋予权重来优化遍历次序。而且,Kusano等[7]又采用了动态分析和静态分析相结合的偏序关系约简策略,具体结合点则是利用提出的谓词依赖关系而将并行程序状态空间抽象为可能导致断言失败或死锁的冲突内存访问对,其实现过程是将目标程序插桩,同时再通过依赖算子分析并行操作间的依赖关系,而后又以此为依据在动态分析已插桩的目标程序时采用动态偏序约简策略来对冗余的交叠踪迹完成剪枝处理。
  1.2 并行程序模块化验证
  并行程序模块化约简是从线程内局部操作和全局操作的差别出发,通过分别推理线程内程序状态和线程间作用状态来降低搜索空间。具体地,依赖保证约简(Rely-Guarantee,RG)即是典型代表,如文献[8-13]。该方法首先假设外界线程对本地线程的影响,作为依赖(Rely),由此推理线程内局部状态,再分析本地线程施加于远端并行线程对的影响,作为保证(Guarantee)。其后则迭代分析可达状态,直到状态空间稳定。
  归纳数据流图(Inductive Data Flow Graph, iDFG)方法[14-15]同样利用了线程间交互的模块性特点,即通过迭代分析共享变量在线程间的数据流图来搜索状态空间。而与此迭代分析不同的是,本文方法是在保证目标属性仍然安全的条件下通过泛化当前可达状态,以此来实现状态空间的约简。
  1.3 对称性约简方法
  对称性约简就是利用相似线程间状态变迁相似的特点来简化并行程序状态空间的方法。传统约简方法[16]中将对称性定义为变迁等价类。对称关系则是在程序状态空间上的一个双射关系π,且满足如下约束:即(s,s’)是一个变迁时,当且仅当存在对应的另一个变迁(π(s), π(s’))。但是该类定义却假设并行线程都是无法区分,这将极大限制了在该定义下的应用范围。基于此,如何将对称关系的约束拓宽至非对称关系的约束也随即成为近期研究的主要方向。相应地,文献[17]提出了近似对称和粗糙对称结定义,继而由文献[18]推广到虚拟对称。虚拟对称就是满足互模拟对称商的最通用的条件。只是互模拟对称商很难获得,而且该类验证的属性也仅只局限于对称属性。文献[19]则提出了“超级结构”,并通过向该结构增加辅助变迁来表达任意对称关系,由此构造保护标记商。但是在验证过程中却要通过频繁地检测是否满足实际对称关系来弥补由于辅助变迁导致的精度缺失。另有,文献[20]又提出了懒惰约简策略,在分析程序前不假设任何对称关系,而在搜索过程中对每个可达状态也只是标记其如何违反了对称关系,主要依据就是:进程的相似度越高,其所获压缩表示的程度将越深。该方法采用了自顶向下压缩方式,并利用语法相似性来标记进程间对称性,再通过虚拟结点表示构成对称关系的实际状态结点集合,以此建立了约简结构。而当模型检测时,即将虚拟结点转换为实际结点进行分别验证。此外,文献[21]提出了利用克雷格插值技术以自底向上来发掘对称性。具体实现时,由于计算克雷格插值时采用的是后向学习策略,这就在保证合并后状态的同时,又进一步保证了断言的安全性,而且也避免了逐项展开的额外开销。
  1.4 并行程序干扰分析
  由共享变量传递的并行干扰是导致并行程序交叠执行下可行踪迹组合爆炸的直接原因,第三类约简方法即是从待验证的目标属性出发,却只分析了与目标属性相关的交叠执行踪迹和可达状态。而并行干扰抽象方法[22-23]则是将交叠执行转化为共享变量读写匹配对的可满足性问题而展开其实现研究的。该方法以有限模型检测为基础、而且以不同并行线程对共享内存的访问为分析目标,在将读系匹配对编码为一阶谓词命题形式后,利用约束求解器(Satisfiability Modulo Theory,SMT)进行了计算,继而又利用关联变量上近似和下近似来控制查询规模,同时也利用上下近似修正规则来指导迭代的下一轮查询,该过程中将基于不动点理论判知该过程收敛至对验证条件的证明或者发现真实反例。研究可知,对于发现并行程序缺陷,该方法可以在精度与效率方面得到良好平衡。
  2 现有并行程序状态空间约简方法的不足
  综上论述可知,基于偏序关系的约简方法流程是分析了可能的交叠执行划分,再计算对共享变量的影响。而在共享内存模型下,通过共享变量间数据流关系相较控制流则更易分析共享变量和线程内局部变量的可达状态。但是,该类方法却因在独立踪迹实际可达状态间的关系方面缺乏充足考虑,这就使得即便彼此独立的代表踪迹也仍有可能具有相同的可达状态集合。
  并行程序模块化验证方法具有迭代分析特点,但在迭代过程会产生虚假踪迹的问题,针对该错误即需进行修正而产生了额外时空开销。这是由于估计状态与实际状态差异及其传播,由此而延迟了对线程内可达状态的修正,致使部分时空开销将无可避免地耗费在对不可行全局交叠执行路径的分析上。
  在对称性约简方法中,利用插值策略来约简并行线程间对称性的技术拓展了对称性的限制,而且在没有先验知识的条件下,又利用了弱对称关系来实现了并行线程间相似的交叠执行踪迹和状态的有效约简。但是该方法在应用插值蕴含操作时对后续交叠执行情况的要求却过于严格,导致可被蕴含的踪迹相应地出现了延迟,因而产生额外的分析开销。   基于并行干扰的并行程序状态空间约简方法,因其依赖于有界模型检测,即其输入是执行序列的有限展开,就使得并行干扰抽象是借助下近似策略来截断无限循环类语句,由此导致对验证条件的安全性证明将存在不完备的可能。
  3 结束语
  现有的并行程序状态空间约简方法主要从相对独立的视角出发对其中冗余状态或路径进行合并,但由于并行程序特点的不同,实现的代码与分析视角的契合程度并不相同,因此现有方法只能适用于具有一定特点的某一类并行程序。如果能够根据并行程序内部的实际特点而分别采取某几种方法来分析将会克服单一视角的不足,但是如何融合不同视角间不同类型并行信息的表达将是进一步研究的方向。此外,如何将静态分析结果与动态分析观测值相结合来进一步提高搜索效率也是需要深入探讨的研究方向之一。
  参考文献:
  [1]GODEFROID P. Partial-Order Methods for the Verification of Concurrent Systems: An Approach to the State-Explosion Problem[M]. Secaucus, NJ, USA: Springer-Verlag New York, Inc., 1996.
  [2]FLANAGAN C, GODEFROID P. Dynamic partial-order reduction for model checking software[C]//ACM Sigplan Notices. New York: ACM Press, 2005:110-121.
  [3]GUETA G, FLANAGAN C, YAHAV E, et al. Cartesian partial-order reduction[C]//Proceedings of the 14th International SPIN Conference on Model Checking Software. Berlin, Heidelberg: Springer-Verlag, 2007:95–112.
  [4]YANG Y, CHEN X, GOPALAKRISHNAN G, et al. Efficient stateful dynamic partial order reduction[C]//Model Checking Software: 15th International SPIN Workshop, Los Angeles, CA, USA, August 10-12, 2008, Proceedings. Berlin: Springer-Verlag, 2008:156:288.
  [5]KAHLON V, WANG C, Gupta A. Monotonic partial order reduction: An optimal symbolic partial order reduction technique[C]//Computer Aided Verification. New York: ACM Press , 2009:398–413.
  [6]ABDULLA P, ARONIS S, JONSSON B, et al. Optimal dynamic partial order reduction[C]//Proceedings of the 41th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. 2014. New York: ACM, POPL ’14.
  [7]KUSANO M, WANG C. Assertion guided abstraction: a cooperative optimization for dynamic partial order reduction[C]//Proceedings of the 29th ACM/IEEE international conference on Automated software engineering. ACM, 2014: 175-186.
  [8]GUPTA A, POPEEA C, RYBALCHENKO A. Threader: a constraint-based verifier for multi-threaded programs[C]//Computer Aided Verification. Berlin: Springer, 2011:412–417.
  [9] GUPTA A, POPEEA C, RYBALCHENKO A. Predicate abstraction and refinement for verifying multi-threaded programs[C]//ACM SIGPLAN Notices. New York: ACM, 2011:331–344.
  [10]VAFEIADIS V. RGSep action inference[C]//Verification, Model Checking, and Abstract Interpretation. New York: Springer, 2010:345–361.
  [11]VAFEIADIS V, PARKINSON M. A marriage of rely/guarantee and separation logic[C]//CONCUR 2007 Concurrency Theory. Berlin: Springer, 2007:256–271.   [12]VAFEIADIS V. Automatically proving linearizability [C]//Computer Aided Verification. Berlin: Springer, 2010:450–464.
  [13]CUOQ P, KIRCHNER F, KOSMATOV N, et al. Frama-C [M]. Gilles Barthe, Alberto Pardo:Software Engineering and Formal Methods. Berlin: Springer, 2012:233–247.
  [14]FARZAN A, KINCAID Z. Verification of parameterized concurrent programs by modular reasoning about data and control[C]//Proceedings of the 39th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. New York: ACM, 2012:570-582.
  [15] Farzan A, Kincaid Z, Podelski A. Inductive data flow graphs[C]//Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages. New York: ACM, 2013:129–142.
  [16]EMERSON E A, SISTLA A P. Utilizing symmetry when model-checking under fairness assumptions: an automata-theoretic approach[J]. ACM Transactions on Programming Languages and Systems (TOPLAS), 1997, 19(4): 617-638.
  [17]EMERSON E A, TREFLER R J. From asymmetry to full symmetry: New techniques for symmetry reduction in model checking[M]//Tiziana Margaria:Correct Hardware Design and Verification Methods. Springer Berlin Heidelberg, 1999: 142-157.
  [18]EMERSON E A, HAVLICEK J W, TREFLER R J. Virtual symmetry reduction[C]//Logic in Computer Science, 2000. Proceedings. 15th Annual IEEE Symposium on. Santa Barbara, California, USA:IEEE, 2000: 121-131.
  [19]SISTLA A P, GODEFROID P. Symmetry and reduced symmetry in model checking[J]. ACM Transactions on Programming Languages and Systems (TOPLAS), 2004, 26(4): 702-734.
  [20]WAHL T, D’SILVA V. A lazy approach to symmetry reduction[J]. Formal aspects of computing, 2010, 22(6): 713-733.
  [21]CHU D H, JAFFAR J. A complete method for symmetry reduction in safety verification[C]//Computer Aided Verification.Berkeley, CA,USA: CAV2012, 2012: 616-633.
  [22]SINHA N, WANG C. Staged concurrent program analysis[C]//Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering. New York: ACM Press, 2010: 47–56.
  [23]SINHA N, WANG C. On interference abstractions[C]// ACM SIGPLAN Notices. New York: ACM Press, 2011: 423-434.
其他文献
随着高等教育的发展,高校学生参与辅修的现象日益普遍,通过对某高校小学教育专业的辅修学生进行问卷调查,了解他们的辅修学习现状。结果表明,辅修学生的来源广泛,大多数学生具有明确的辅修动机,并能正确处理主修与辅修的关系。最后,针对于现阶段高校辅修中存在的问题,提出了相应的解决措施。  高校学生辅修动机学习现状教学管理一、研究背景  当前,由于社会对复合型人才的需求日益强烈,具有跨学科能力的学生在就业时更
早晨小鸟喳喳叫,  全家人都起得早。  爸爸忙着上班去,  妈妈端出热牛奶,  不忘塞上俩鸡蛋,  叮囑一路要小心。  奶奶送我去学校,  心疼我小肩膀嫩,  抢了书包帮我背,  我说学习靠自己。  中午家里真安静,  爷爷弟弟睡得香。  下午大家忙开了,  奶奶广场舞得欢,  妈妈网店生意好,  我在学校把书读。  傍晚时分全家聚,  热热闹闹围桌旁。  爸爸奉上好新闻,  邻里趣事爷爷讲,  
【摘要】启发式教学就是综合运用各种教学方法,通过启发诱导培养学生能力、传授知识,践行道德认知,实现更好的成长。在《道德与法治》的教学过程中,进行活动启发、故事启发、思辨对话启发,让课堂更为深刻与丰盈。本文在对启发式教学分析的基础上,对在道法课堂上如何应用启发式教学作了探讨。  【关键词】启发式教学;道德与法治;运用  鉴于目的是使学生的情感得到充分的激发,启发式教学应该成为我们课堂的重中之重。不按
爱捧着手机观看视频的你是否常收到手机流量不足的提示?这种情况若发生在月末最是纠结,买了流量用不完就会造成浪费,不买话费就会“嗖嗖嗖”地往上涨。针对各种流量荒,各大运营商都推出了合作流量套餐,大家可以根据需要订购。月租流量卡,视频想看就看  ◎出镜人/刘 蕾(28岁,白领)  作为白领族,我最担心的就是无线网络不稳定,每次午休时想刷个网站放松放松,都会因为公司限制了无线网络的流量,导致视频加载缓慢,
通过学习《遨游汉字王国》(小学语文人教版第九册),同学们是不是对汉字油然生发出了一种亲近之感,深刻感受到了汉字之美,进而想更多地了解汉字呢?那么,接下来,张老师就沿着课文内容,帮同学们拓展一下汉字知识吧!  世界上没有哪一种文字像汉字这样历经沧桑,却青春永驻。汉字源于自然,来自生活,是当今世界上唯一留存下来的象形文字。通过读课文《仓颉造字》,查阅古代著作《淮南子》,同学们可以知道,原来仓颉造字的灵
守望教育就是守望教育的理想。日常教学工作中,我们急功近利,让教育丧失了很多成功的机会。我们应该在育人教育中渗透“慢艺术”。学会慢教育的方式方法,从本质上纠正孩子的一些习惯、思想,教育学生于无痕。  守望教育 慢教育 班主任工作  “我从古老的童谣中走来,韵味悠长的童谣里浸润着爱的音符;我从青春的脚步中走来,且行且吟的脚印里洒满了爱的阳光……”读首这几句充满人生哲理的话,不由感叹教师是一个能把人的创
【摘要】在初中物理教学中,教师常常用“概念不牢、地动山摇”来突出概念的重要性。教师需要引导学生以正确的思路建立物理概念,打好物理知识基础,并掌握正确的学习方法。本文对初中物理概念教学中的核心提问策略进行研究,借助核心提问策略提高概念教学的有效性。  【关键词】初中物理;概念教学;核心提问策略  核心问题指的是教学中的重难点和关键性问题,而核心提问策略则是针对核心问题的课堂提问策略。在初中物理概念教
我是世界上最不能跳高的动物,全身起跳超不过五厘米。但不要小瞧我呀,虽然不能跳,走和跑还是可以的。如果把我惹急了,跑起来速度还挺快呢!  在一些地方,我们能替代运输工具,用鼻子帮人类搬运些大木头啥的。可有些坏人会强硬地要我们的大牙,这样会要了我们的命。写到这儿,你肯定猜到我是大象了。亲爱的读者,读完这篇文章后,请好好保护我们吧!  故事开始了:  小熊的妈妈要去泡温泉,于是把小熊藏在紫草科里,可怜兮
不畏浮云遮望眼,只缘身为情报员。自从校长一声喊,如雪情报飞满天。有谁描眉画了眼,有谁对谁有好感。有谁夜间有来电,有谁看谁情绵绵。有谁牵手逛公园,有谁分手不见面。有谁嬉笑一整天,有谁整日板着脸。有谁吃饭虎狼咽,有谁呼噜声震天。有谁课堂去小便,有谁大便憋红脸……  ——据媒体报道,深圳南山区一所学校为了掌握学生心理情况,在每班特设两个“心理情报员”,负责搜集同学的心理信息,每周定期向老师提供情报,以便
前不久,我在逛街时碰到一家特别喜欢的店,一下买了几件新裙子,每天穿着不同款式的衣服,快乐的情绪维持了好久。看来,新鲜确实是对抗千篇一律生活的良药。环顾四周,已经住了六七年的家,还是结婚时的老样子,怎么看怎么单调。可是,装修是件伤筋动骨又劳心伤财的事,还要考虑许多环保因素。直到参加了一次某家居品牌的软装新品发布会,我抑制不住地大喜,终于找到了不装修也能让家里换新装的好方法。  布艺搭配,给你想要的风