\[ % \def\w{mathsf{w}} % \def\r{mathsf{r}} \def\rd{\textcolor{orange}{\overset{rd}\Longrightarrow}} \def\b{\textcolor{green}{\overset{b}\rightsquigarrow}} \def\rf{\textcolor{green}{\mathsf{rf}}} \def\co{\textcolor{orange}{\mathsf{co}}} \def\fr{\textcolor{purple}{fr}} \def\br{\textcolor{purple}{br}} \def\po{\mathsf{po}} \def\porf{\po\rf} \def\init{\mathsf{init}} \def\next{\mathsf{next}} \def\Event{\mathsf{Event}} % \def\wwrr{\mathsf{w+w+rr}} \def\R{\mathsf{R}} \def\W{\mathsf{W}} \def\Previous{\mathsf{Previous}} \]
摘要
动态偏序约简(DPOR)通过探索并发程序的所有交错直至某种等价关系(例如 Mazurkiewicz 迹等价)来验证并发程序。这样做涉及空间和时间之间的复杂权衡。现有的 DPOR 算法要么是探索最优的(即仅精确探索每个等价类的交错),但可能使用程序大小的指数内存,要么保持多项式内存消耗,但可能会探索指数级的许多冗余交错。
在本文中,我们表明可以两全其美:在线性内存消耗的情况下探索每个等价类的确切一个交错。我们的算法 TruSt 在 Coq 中形式化,不仅适用于顺序一致性,还适用于满足一些基本假设的任何弱内存模型,包括 TSO、PSO 和 RC11。此外,TruSt 的可并行性令人尴尬:它的不同探索选项没有共享状态,因此可以完全并行探索。因此,TruSt 在内存和/或时间方面优于最先进的技术。
作者: