没有合适的资源?快使用搜索试试~ 我知道了~
堆抽象算法在程序优化和静态分析中的应用
埃及数学学会埃及数学学会www.etms-eg.orgwww.elsevier.com/locate/joemsJournal of the Egyptian Mathematical Society(2012)20,64原创文章基于堆抽象Mohamed A. 扎瓦维计算机和信息科学学院,Al-Imam M.I.- S.I.开罗大学理学院数学系,埃及吉萨126132011年4月30日收到; 2012年2012年9月28日在线发布摘要本文提出了一套新的堆抽象算法,识别逻辑相关的堆区域。目标区域包括作为相同组件结构(递归数据结构)的一部分的对象。本文中概述的技术的结果具有紧凑范式(抽象模型)的形式,通过加速其收敛来提高静态分析的效率。堆抽象的结果,以及数据结构的一些属性,可以用来实现程序优化,如静态释放,池分配,基于区域的垃圾收集和对象协同定位。更准确地说,本文提出了算法抽象堆组件的布局的单链表,二叉树,循环,和有向无环图。本文对这些算法的终止性和正确性进行了研究。为了提出算法,本文还提出了具体和抽象的堆表示模型2012年埃及数学学会。制作和主办:Elsevier B.V.在CC BY-NC-ND许可下开放访问。1. 介绍本文提出了一种有效的堆抽象技术,它采用识别和分组逻辑相关的堆区域的形式堆抽象的结果是程序堆的正常形式范式对于抽象建模程序是必不可少的,它能提高建模效率电子邮件地址:maelzawawy@cu.edu.eg同行评审由埃及数学学会负责通过辅助分析更快地收敛,客户端优化应用程序也可以使用范式提供的信息来实现对象共址、池分配[1]、静态释放[2]等分析。堆抽象的概念是在对象分配和内存布局的研究过程中自然出现的,其中池分配和对象协同定位等技术使用堆抽象来提高对象局部性。垃圾收集的效率[3]也通过其他技术使用堆抽象来提高。静态释放数据结构或区域的应用程序比其他应用程序更直接地使用堆抽象在抽象过程中,通过将分组过程限制在预期包含死对象的堆区域,1110- 256 X? 2012埃及数学学会。制作和主办:Elsevier B.V. 在CC BY-NC-ND许可下开放访问。http://dx.doi.org/10.1016/j.joems.2012.08.009制作和主办:Elsevier基于堆抽象的逻辑相关区域识别65可以用来延迟垃圾收集的时间 并行垃圾收集也可以通过其他方法来处理,这些方法使用堆写/读信息来静态地找到可以安全地分组而不会给mutator带来负担的堆区域。上面提到的方法使用了各种堆抽象技术[4这些方法中最简单的一种是基于指针分析(如Steensgaard分析[7])的结果对堆对象进行分组。这些技术中的大多数不能方便地对数据结构的面向对象特性进行建模,因为这些技术基于指针分析或其他对流/上下文无关的分析。本文提出了一种比这些方法精确得多的方法此外,我们的技术可以用作优化堆的工具,从而提高内存区域的效率。此外,我们提出的技术是有用的,以提高效率的一系列静态分析方法。这是通过使用堆抽象来规范化抽象模型[8]来实现的,这反过来又会降低抽象格的高度。因此,这个归一化过程可以实现为一个加宽操作,将无限高度的域变成有限高度的域。这里提到的规范化有两个方面。一个方面是将可能无限大的递归结构分解为有限结构。另一个方面是使用相似性关系对对象进行分组,构成复合数据结构。虽然堆抽象(规范化)的思想在已有的研究中已经出现,但本文提出的实现堆抽象的算法比以前的算法更通用、精确和可靠(它们的正确性已被证明)。准确地说,我们的方法适用于各种递归数据结构,如单链表,二叉树,循环和无环有向图。本文提出的方法可以很好地处理多构件结构,而这是现有方法所不能处理的。1.1. 激励的例子图1、3、5和7为我们的工作提供了激励性的例子。假设我们有一个堆,它的单元格有四个组件的形状;单链表,二叉树,循环和DAG(有向无环图的缩写)在图的左手边。1、3、5和7。我们注意到一些细胞,1. 链表中的变量s和e所指向的节点、循环和DAG。2. 链表的倒数第二个节点,以及3. 二叉树的根和二叉树第三级的第三和第四(从左到右)节点是令人感兴趣的,并且包含附加信息作为对剩余单元的补充。堆中的其他单元,如图1一个具体的单链表及其抽象。链表的第二和第三节点是普通的,并且不携带额外的信息。将这样的堆抽象成一个由图1和图2右侧的四个组件组成的堆是明智和有益的。1、3、5和7。这里的抽象是指对堆中逻辑相关的单元进行分组备注1.在我们的示例中,堆的抽象组件中的自边根据组件布局具有不同的含义。1.2. 贡献本文的贡献如下:1. 堆抽象的一种新技术;在单链表、二叉树、循环和有向非循环图中识别和分组逻辑相关单元的新算法。研究了这些算法的可终止性和正确性。2. 堆表示的新的具体和抽象模型;一个形式概念(有效抽象),捕捉具体模型及其抽象之间的关系。1.3. 组织本文的其余部分组织如下:第2节介绍了参数标记的存储形状图模型(具体和抽象),我们用来描述我们的堆抽象的新技术。第3-6节分别介绍了在单链表、二叉树、循环和有向无环图中识别和分组逻辑相关单元的新算法。抽象堆和调用其他算法的算法在第7节中介绍。第8节简要回顾了相关工作。2. 具体和抽象堆模型本节介绍本文所介绍的工作所基于的堆模型。图是我们模型的基本组件。类似的模型被用于Java程序的形状和共享分析的相关工作[6,9]值得一提的是,本文的概念适用于基于分离逻辑的其他技术[10像往常一样,我们的内存语义是使用堆栈和堆对来定义的。堆栈为变量赋值,堆为内存地址赋值。每一对栈和堆称为一个具体组件。混凝土堆的概念表示混凝土组件的有限集合。一个具体的组成部分是由一个标记有向图,它有一个布局属性,捕捉由该组件表示的存储器单元的布局。精确定义如下:定义1.一个具体堆是一个有限的不相交的标记有向图(称为具体组件)C1,... ..组件Ci的布局由Ci表示。布局更准确地说,Ci=(Vi,Ai,Pi),其中:66M.A. 扎瓦维.ΣB.ΣBBb b bb bBBbables和(b)有两个映射;从C的节点到BBðÞBbBbb bbB bB bBb b bbbb!!f0N;f0P. 那么,很容易看出,◦ fN;f0P22P2111N2深度n =b,n= 2{a,b};即,n对后边缘有贡献.ΣBbBBb1. Vi是一个有限的变量集;VicVar。2. 8.第八条。n2;n02。2Pb2:fP-1n2;n20n.n1;n102Pb1jn12fN-1n2^2. A i是内存地址的有限集合; A ic Addrs。3. 当Ci. 布局=SLL、DAG或C,Pi是一组指针n012fN-1n02g.3. 8n2;n02;nx2Pb2:fP-1..n2;n02;nx恰。.n1;n01;nx2定义为Pic(Vi·Ai)[(Ai·Ai)。4. 当Ci.布局=T,Pic(Vi·Ai)[(Ai·Ai·{l,r}).堆中的区域、区域的边、进入区域的边和离开区域的边定义如下:定义2.一个集合R被称为是一个具体分量C=(V,A,P)中的一个区域,如果RcA.此外,委员会认为,1. P(R) ={(a1,a2,nx),(a1,a2)2P<$a1,a22R},2. Pin(R) ={(a1,a2,nx),(a1,a2)2P<$a12AnR,a22R},并且P1jn12fN-1n2^n012fN-1n02g.对(fN,fP)称为有效抽象的见证。引理1. 抽象构件上的有效抽象 关系是传递的。证据假设C2是C1的一个有效抽象,有见证人(fN,fP)和Cb3 是一个有效的抽象测试。Cb2离子 与第二名证人3. Put(R) ={(a,a,n x),(a,a)2P<$a2R,a2AnR}.Cb3是C b1的有效抽象。 Ho1 21 2 1 2第五章. 一个抽象堆. . ;Cbn是一个有效的抽象-tion的一混凝土堆(C1,. 、 Cn)如果每[13,6]中给出的存储形状图。con-coni的概念具体构件由抽象构件抽象而成,抽象构件是一个标号有向图V;N;P,其中V是与变量对应的节点集,N是与变量对应的节点集每个对应于(抽象)具体组件的区域,以及(c)P是一组图边,每个对应于(抽象)一组指针。与具体组件类似,每个抽象组件都有一个布局属性。更精确地说,抽象堆和抽象组件定义如下:定义3.一个抽象堆是一个有限的不相交的标记有向图(称为抽象组件)C1;... 其中每一个都具有布局属性SLL、T、C或DAG。 更准确地说,Ci1/2Vi;Ni;Pi 1/2,其中:1. Vi Var.2. Ni是节点标识符的有限集合(每个标识符代表堆的一个区域)。3. 当C i:layout<$SLL;DAG;或C;P i是一组指针,定义为P iVi×N i[N i× N i。4. 当Cbi:layout<$T;Pi=Vbi×N i[ <$N i×N i×fl;rg.抽象组件中的区域类似地定义为节点标识符的集合。备注2. 每一个具体的堆都是一个抽象的堆。现在我们来介绍抽象的概念。抽象组件C被描述为另一个C 0的有效抽象,如果(a)它们具有相同的布局和相同的变量集,C0的节点和从C的边到C0的边的映射,使得这些映射保持组件的连通性。定义4. 抽象组件C1V1;N1;P1是一有效抽象的另一摘要组件Cb¼Vb;Nb;Pb Cb:layoutVb,以及16i6n;Ci是Ci的有效抽象。备注3. 每个具体堆都是其自身的有效抽象。3. 抽象单链表本节介绍了一种新的算法,用于抽象布局为单链表的堆组件。 图 1表示长度为8的链表(左)及其长度为4的抽象表示(右)。显然,具体列表的一些节点被分组到区域中。我们注意到,节点h0和h7是特殊节点,因为它们分别由两个变量s和e节点h6也是特殊的,因为它与节点h7共享后边缘。这些特殊节点在列表的抽象版本中没有分组。从节点h1到节点h5都是普通节点,没有什么特别之处。这些普通节点在抽象版本中被分组到节点(区域)i1中。i1的自边捕捉了i1表示混凝土构件的区域的现象。列表的各种属性通过将列表节点划分为两类来捕获;普通节点和特殊节点。首先,抽象版本中列表的压缩表示大大提高了分析的效率。接下来,分别由变量s和e指向的第一个和最后一个节点以及倒数第二个节点保持分离。这支持了分析,以方便地模拟以后的程序命令的语义。虽然程序中每个列表的普通节点在列表的抽象版本中被分组为单个节点,但程序的不相关列表被分开。换句话说,具体堆中的单独列表在抽象模型中保持分离,而相同列表中的节点分组在一起。这有助于保存许多优化技术所需的信息。单链表的特殊节点和普通节点的正式定义如下:第六章. 设Cb<$$>Vb;Nb;Pb<$是一个抽象分量2 2 2 2 1 2 1 2B b其布局为SL L。然后,一个节点n2Nb是特殊的,如果:有两个映射fN:N1N2和fP:P1P2,即:1. 8 v;n2Pb:f-1v;n2Pbjn2f-1ng.1. 对于某些^v2V;n^v;n nnn 2P,或2. 存在a;b< $2Pb,使得a;b2Nb;深度<$a<$>证人我们抽象堆的概念是受基于堆抽象的逻辑相关区域识别67Bbb b bBbb bbBbBBBBb一个节点如果不是特殊的,就是普通的图2概述了一个新的算法抽象单链表。该算法首先在集合M中收集输入链表的普通节点。然后,该算法合并M中共享一条边的任何一对节点。合并过程包括添加自边。该算法假设存在一个从链表中删除节点的函数remove-nodeAbstract-SLL的终止性和正确性证明如下:定理1. 算法Abstract-SLL总是终止。证据我们注意到M是有限的,因为M是N,N是有限的。如果M的基数为m,则第二步中的while循环最多迭代m-1次。H定理2. 假设Cb <$$>Vb;Nb;Pb<$是一个抽象成分,4. 树抽象在本节中,我们提出了一个新的算法,用于抽象布局为树的堆组件。图3呈现了大小为15、高度为3的二叉树(左)及其大小为8、高度为3的抽象表示(右)。我们注意到节点h0是特殊的,因为它被变量R指向。另外,节点h5和h6是特殊的,因为它们共享树的一个顶点边缘。特殊节点在树的抽象版本中不分组。我们还注意到左子树没有什么特别的因此,左子树被分组在紧凑树的节点i1中。i1的自边模拟了i1表示一个完整的二叉树的事实。定义7.设V;N;P是一个抽象组件,其布局为T。那么,一个节点n2Nb是特殊的,如果1. 对于某些^v2Vb;n^v;n n< $2Pb,或其布局为SLL和Cb0¼Abstract-SLLCb的组件。然后,2. 存在na;b;n 2Pb使得að Þ ð Þ 2C0是C的有效抽象.证据 我们注意到有两种操作 在整个算法中发生的;删除节点和添加自边。由于这两个操作都不影响组件的布局,因此输出组件的布局 保证保持SLL。通过对M的基数的归纳,完成了C0是C的有效抽象的证明. 对于归纳基,对于M=0和M=1,所需的结果是平凡的。 对于归纳假设,我们假设所要求的结果对于任何有限集合N都是真的,其中对于某个正整数n,满足<$N <$= n。对于归纳步骤,我们证明了所需的结果对有限集合M成立,其中M=n+1如下。我们假设(a,b)是在循环的第一次迭代时选取的边(如果那里是没有, 然后 的 算法 终止 和输出是正确的)。显然Cb是一个有效的抽象深度a P深度b和n{a,b};即,n对a的水平或后边缘。一个节点如果不是特殊的,就是普通的图4给出了一种新的树抽象算法。该算法首先在集合M中收集输入树的普通节点。然后,算法自底向上遍历树,合并普通节点。合并过程包括添加自边。该算法假设有一个函数remove- nodes,它从树中删除几个节点。下面两个定理的证明分别与定理1和定理2的证明定理3. 算法Abstract-T总是终止。定理4. 假设Cb <$$>Vb;Nb;Pb<$是一个抽象成分,身份证(IN,IP)。现在,在循环的第一次迭代后获得的分量,表示为其布局为T和C0¼Abstract-TC。那么,C0是C b的有效抽象。通过 Cb00, 是 一 有效 抽象 的 CB与 证人w00=(I N [a′b],I P [(a,b)′(a,a)]).算法的其余部分在C上的运行等价于在C0 0 上 的 运 行。明确对于C0 0 的 运 行,因此,通过归纳,假设C0是C00 的 一个有效的抽象,有一些证据w0. By引理1,Cb0 是Cb的一个有效抽象,w=w0w0 0.H5. 循环抽象本节介绍的新算法负责抽象布局为循环的堆组件。图5示出了尺寸为8的周期(左)及其抽象的代表。(右)4号。我们注意到节点h是特别的-图2算法Abstract-SLL.68M.A. 扎瓦维b b b b bbb223 45 6 7 8 9 10b b bBbb223 45 6 7 8 9 10C b的有效抽象b b b2BðÞ图3一个具体的二叉树及其抽象。图4算法Abstract-T.下面两个定理的证明,解决了算法Abstract-C的终止性和正确性,分别类似于定理1和2的证明图5一个具体的循环及其抽象。因为变量S指向它。节点h7定理5. 算法Abstract-C总是终止。定理6. 假设C<$V;N;P<$是一个抽象组件,其布局为C,而Cb0<$Abstract-C<$Cb<$。那么,Cb0是a是特殊的,因为分别有多于一个的边离开和进入节点。正如它应该发生的那样,特殊节点没有分组在抽象版本的循环中。我们还注意到,节点h2到节点h6没有什么特别之处。因此,这些节点被分组在压缩循环的节点i2中。i2的自边模拟了这样一个事实,即i2表示周期的任意长度的序列。特殊节点和普通节点的定义如下:定义8.设V;N;P是一个布局为C的抽象组件。那么,一个节点n2N是特殊的,如果– 对于一些^vV;^v;nP,或– 在({n})n中的p>1,或– Pou t({n})一个节点如果不是特殊的,就是普通的图6呈现了用于循环抽象的原始算法Abstract-C。与目前为止提出的算法类似,该算法的第一步是收集循环的普通节点。然后,该算法反复挑选一对共享直接边的普通节点。该算法删除两个节点中的一个及其边缘,并将一个自节点添加到剩余的节点。6. DAG抽象本节介绍一种新颖的方法来抽象布局为DAG的堆组件。图7呈现了大小为8的DAG节点h0是特殊的,因为它被变量S指向。这个特殊的节点在抽象版本的DAG中保持独立。从节点h2到节点h6没有什么特别的。 因此,这些节点被分组在压缩的DAG的节点i2中。i2的自边模拟了i2表示一组参考相似的节点的事实。如果DAG的两个不同节点没有通过边连接、指向同一组节点并且由同一组节点指向,则它们是参考相似的。一组节点是引用相似的,如果它的每个不同的元素对都是引用相似的。以下定义正式引入了特殊节点、普通节点和引用相似性的概念。第九章. 设V;N;P是抽象的布局为DAG的组件。然后,节点n N是特殊的,如果对于某个v^V;v^;nP. 一个节点如果不是特殊的,就是普通的。和h1基于堆抽象的逻辑相关区域识别692Bbb b b b bBbBbB¼2¼ ðÞb b bb bb b b b bBBb b b b bb bb联系我们¼ ðÞ图6算法Abstract-C.项M,到参考相似集合中。这是通过选择一个元素a M并将所有引用类似于a的元素添加到a的分区中来完成的。下面定理的证明与定理1的证明类似。图7具体的DAG及其抽象。10. carton 设CV;N;P是一个抽象组件,使得C:layout DAG.两个不同的节点a;b N相对于C是参考相似的,如果1. a;b; c;d; e;2. fc2Njiuc;a102Pg 1/2 fc2Njiuc;b102Pg,和3. f c 2Nbja;c 2Pbg ;f c 2Nbjb;c 2Pbg。如果A中的每一对不同元素相对于Cb是参考相似的,则节点集合A N相对于C是参考相似的。图8显示了抽象DAG算法,它用DAG布局抽象堆组件。该算法调用算法Ref-similar-DAG(图9),其对于给定堆组件计算参考相似集的集合算法Abstract-DAG的第一步是计算参考相似集的集合G0。G0的单例元素被过滤掉以获得集合G。对于G中的每一个集合A,该算法将A的元素分组到具有自边的抽象DAG的单个节点中。 算法Ref-similar- DAG首先将其映射到空集。其次,该算法将输入分量的普通节点存储在集合M中.第三步是划分普通的ele-e-n集合,定理7. 算法Ref-similar-DAG总是终止。下面的定理的证明是通过归纳M的基数。定理8. 设C V;N;P是一个抽象成分,GRef类似达格角则G的每个元素相对于C是参考相似的。定理9. 算法Abstract-DAG总是终止。定理10. 假设C<$V;N;P<$是一个抽象组件,其布局是DAG和C0<$Abstract-DA G<$C <$。那么,C0是C b的有效抽象。7. 堆抽象本节介绍我们的基本算法Heap-Abstract,用于堆抽象。对于给定的n个组件的抽象堆,算法检查每个组件的布局,并调用适当的算法来抽象手头的组件。该算法在图10中概述。该算法的终止性和正确性继承了已有算法的终止性和正确性。定理11. 算法Heap-Abstract总是终止。图8算法Abstract-DAG.70M.A. 扎瓦维图9算法Ref-similar-DAG。图10堆抽象算法。定理12. 假设 的H 是一 混凝土堆和h^^Heap-抽象堆。那么,h^是h的有效抽象。8. 相关工作静态地改进面向对象程序的堆分配、抽象和布局的领域有丰富的文献[4,14,5,6,15,16,1]。这些技术可方便地应用于大型程序,并使用指针分析的结果来计算区域信息计算所需的静态分区。然而,这些技术存在共同的缺点;(a)它们具有有限的能力来方便地分析重新排列区域的程序,以及(b)它们具有有限的能力来方便地探索大型复杂结构的组件。该等差额乃由于划分方法不精确及低敏感度所致。本文提出的堆优化算法克服了这些缺点.其他基于分离逻辑的技术[10,17]模拟堆的破坏性更新以及这些更新如何修改堆布局[18,12,19,11,20这些技术精确地模拟了复杂的堆操作,但它们所施加的限制使这些技术不适合区域分析。这个缺点可以通过以下事实来证明:大多数这些方法都是为了分析只处理列表或树的程序而制定的。未来的研究方向是扩展这些文件的技术,我们目前的文件的精神。由于分离逻辑作为通用框架的普遍性,这在这个方向上具有巨大的潜力。数学域和域之间的映射可用于以数学方式表示程序和数据结构.这种表示被称为程序的指称语义学。我们未来研究的方向之一是将堆概念转换到指称语义[26,27]。这样做提供了一个很好的工具,以数学方式研究深堆概念。然后将得到的结果翻译回程序和数据结构。引用[1] 王振江,吴成刚,姚本忠,基于动态池分配的堆内存布局优化,载于:Andreas Moshovos,J.放大图片作者:Kim M.戴维·黑兹尔伍德Kaeli(Eds.),CGO,ACM,2010,pp.92比100。[2] Javier de Dios,Manuel Montenegro,Ricardo Pena,在具有显式释放的语言中证明没有悬挂指针,在:DominiqueMery , Stephan Merz ( Eds. ) , IFM , Lecture Notes inComputer Science,vol. 6396,Springer,2010,pp. 305-319[3] Martin Schoeberl , Wolfgang Puffitsch , Nonblocking real-time garbage collection , ACM Transactions om EmbeddedComputation Systems 10(1)(2010)91[4] Sigmund Cherem,Radu Rugina,单个对象的时间释放,在:Erez Petrank,J. Eliot,B. Moss(Eds.),ISMM,ACM,2006,pp. 138-149。[5] 蔡明贤,蔡义权,自动化数值抽象于堆处理程式,载:杨文忠,李文忠,POPL,ACM,2010,pp. 211-222[6] Mark Marron,Deepak Kapur,Manuel V. Hermenegildo,逻辑相关堆区域的识别,Hillel Kolodner,Guy L.小斯蒂尔(编),ISMM,ACM,2009,pp.八九比九十八[7] Bjarne Steensgaard , 几 乎 线 性 时 间 的 指 向 分 析 , 载 :POPL,1996年,第100页。32比41基于堆抽象的逻辑相关区域识别71[8] 莫里斯·H Ter Beek,Alessandro Fantechi,Stefania Gnesi,FrancoMazzanti , Astate/event-basedmodel-checkingapproach for the analysis of abstract system properties ,Science of Computer Programming 76(2)(2011)119[9] MarkMarron,MarioMenu-Lojo,ManuelV.Hermenegildo,Darko Stefanovic,Deepak Kapur,Sharinganalysis of arrays,collections,and recursive structures.见:Shriram Krishnamurthi,Michal Young(编辑),PASTE,ACM,2008,pp. 43比49[10] 作者:Josh Berdine , Cristiano Calcagno , Byron Cook ,Dino Distefano , Peter W.OHearn , J.Wies , HongseokYang,复合数据结构的形状分析,Werner Damm,HolgerHermanns ( Eds. ) , CAV , Lecture Notes in ComputerScience,vol. 4590,Springer,2007,pp. 178-192.[11] 放 大 图 片 作 者 : Thomas W. Reps , Mooly Sagiv , Arelational approach to interprocedural shape analysis , ACMTransactions on Programming Languages and Systems 32(2)(2010)72[12] Hongseok Yang , Oukseh Lee , Josh Berdine , CristianoCalcagno , Byron Cook , Dino Distefano , Peter W.OHearn,系统代码的可扩展形状分析,在:Aarti Gupta,Sharad Malik(Eds.),CAV,Lecture Notes in ComputerScience,vol. 5123,Springer,2008,pp.385-398.[13] David R. Chase,Mark N. Wegman,F. Kenneth Zadeck,指针和结构的分析,PLDI,1990,pp.296-310[14] Isil Dillig , Thomas Dillig , Alex Aiken , Symbolic heapabstraction with demand-driven axiomatization of memoryinvariants ,in :William R. 放大图片创作者:George C.Rinard(Eds.),OOPSLA,ACM,2010,pp. 397-410[15] Wolfgang Puf fitsch,Benedikt Huber,Martin Schoeberl,Worst- case analysis of heap allocations , in : TizianaMargaria , Bernhard Steffen ( Eds. ) , ISoLA ( 2 ) ,Lecture Notes in Computer Science,vol. 6416,Springer,2010,pp. 464-478.[16] 放 大 图 片 作 者 : Robert L. 小 博 奇 诺 , 作 者 : JeffreyOverbey , Vikram S. 作 者 : Adve , Ralph E. Johnson ,Infering method effect summaries for nested heap regions ,in:ASE,IEEE Computer Society,2009,pp. 421-432[17] 放 大 图 片 作 者 : 郭 博 磊 , Neil Vachharajani , David I.August,Shape analysis with inductive recursion synthesis,in:Jeanne Ferrante,KathrynS. McKinley(Eds). PLDI,ACM,2007,pp. 256-265。[18] 放大图片创作者:Thomas W.代表,形状分析,在:DavidA.瓦特(Ed.),CC,Lecture Notes in Computer Science,vol. 1781,Springer,2000,pp. 1比17[19] 放大图片作者:Thomas A.Henzinger,Gregory Theoduloz,Damien Zufferey,通过显式堆分析进行形状细化,在:David S.Rosenblum,Gabriele Taentzer(编辑),FASE,Lecture Notes in Computer Science,vol. 6013,Springer,2010,pp.263-277。[20] Mohamed El-Zawawy,Nagwan Daoud,New error-recoverytechniques for faulty-calls of functions , Computer andInformation Science 4(3)(2012)。[21] Mohamed A.El-Zawawy , Program optimizationbasedpointer analysis and live stack-heap analysis , InternationalJournal of Computer Science Issues 8(2)(2011)98 - 107.[22] Mohamed A. El-Zawawy , Flow sensitive-insensitive pointeranalysis based memory safety for multithreaded programs,in:Beniamino Murgante , Osvaldo Gervasi , Andres Iglesias ,David Taniar,Bernady O. Apduhan(Eds.),ICCSA(5),Lecture Notes in Computer Science , vol. 6786 , Springer ,2011,pp. 355-369.[23] Mohamed A. El-Zawawy,多线程程序的概率指针分析,ScienceAsia 37(4)(2011)。[24] Mohamed A. El-Zawawy,基于死代码消除的多线程程序指针 分 析 , 埃 及 数 学 学 会 杂 志 ( 2012 ) ,http://dx.doi.org/10.1016/j.joems.2011.12.011。[25] Mohamed A.哈马达?扎瓦维Nayel,多线程程序的部分冗余消除,IJCSNS International Journal of Computer Scienceand Network Security 11(10)(2011)。[26] Mohamed A. El-Zawawy,Achim Jung,Priestley duality forstrong proximity lattices , Electronic Notes in TheoreticalComputer Science 158(2006)199[27] Mohamed A. El-Zawawy,语义空间在Priestley形式。英国伯明翰大学博士论文,2007年1月。
下载后可阅读完整内容,剩余1页未读,立即下载
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- 京瓷TASKalfa系列维修手册:安全与操作指南
- 小波变换在视频压缩中的应用
- Microsoft OfficeXP详解:WordXP、ExcelXP和PowerPointXP
- 雀巢在线媒介投放策划:门户网站与广告效果分析
- 用友NC-V56供应链功能升级详解(84页)
- 计算机病毒与防御策略探索
- 企业网NAT技术实践:2022年部署互联网出口策略
- 软件测试面试必备:概念、原则与常见问题解析
- 2022年Windows IIS服务器内外网配置详解与Serv-U FTP服务器安装
- 中国联通:企业级ICT转型与创新实践
- C#图形图像编程深入解析:GDI+与多媒体应用
- Xilinx AXI Interconnect v2.1用户指南
- DIY编程电缆全攻略:接口类型与自制指南
- 电脑维护与硬盘数据恢复指南
- 计算机网络技术专业剖析:人才培养与改革
- 量化多因子指数增强策略:微观视角的实证分析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)