QuickLex公司

QuickLex:分布式计算一致全局状态枚举的快速算法。验证并发程序和分布式程序执行的正确性很困难,因为它们由于进程调度顺序不同而表现出不确定性行为。谓词检测可以通过预测用户指定的条件(谓词)是否在给定的并发或分布式计算的任何全局状态下变为真来缓解这个问题。该方法是预测性的,因为它从观察到的执行路径生成推断出的全局状态,然后检查这些全局状态是否满足谓词。谓词检测方法的一个重要组成部分是全局状态枚举,它生成给定计算的一致全局状态,包括推断的全局状态。Cooper和Marzullo给出了第一个基于广度优先策略(BFS)的枚举算法。后来,为了提高空间和时间复杂度,人们提出了许多算法。在现有的算法中,Jegou等人提出的树算法的时间复杂度最小,需要$O(| P |)$空间,与计算量$P$成线性关系。在本文中,我们提出了一个快速算法QuickLex,以词法顺序枚举全局状态。QuickLex需要比$O(| P |)$小得多的空间。从我们的实验来看,树算法需要的内存空间是QuickLex的2-10倍。而且,尽管QuickLex的渐近时间复杂度比Tree高,但它比Tree快4倍。原因是QuickLex最糟糕的时间复杂性只发生在实践中不常见的计算中。此外,树是建立在链表和QuickLex可以实现整数数组。与现有的词法算法(Lex)相比,QuickLex的速度是Lex的7倍,使用的内存量几乎与Lex相同。最后,我们使用QuickLex实现了一个并行的、在线的并发程序谓词检测器,它可以检测程序中的数据竞争和不变量违反。

此软件的关键字

这里的任何内容都将在支持canvas元素的浏览器上被替换