This paper studies the problem of verifying linearizability at runtime, where one seeks for a concurrent algorithm for verifying that the current execution of a given concurrent shared object implementation is linearizable. It shows that it is impossible to runtime verify linearizability for some common sequential objects, regardless of the consensus power of base objects. Then, it argues that actually a stronger version of the problem can be solved, if linearizability is verified indirectly. Namely, it shows that (1) linearizability of a class of concurrent implementations can be strongly verified using only read/write base objects (i.e. without the need of consensus), and (2) any implementation can be transformed to its counterpart in the class (which implements the same object) using only read/write objects too. As far as we know, this is the first runtime verification algorithm for any correctness condition that is fully asynchronous and fault-tolerant. As a by-product, a simple and generic methodology for deriving self-enforced linearizable implementations is obtained. This type implementations produce outputs that are guaranteed linearizable, and are able to produce a certificate of it, which allows the design of concurrent systems in a modular manner with accountable and forensic guarantees. These results hold not only for linearizability but for a correctness condition that includes generalizations of it such as set-linearizability and interval-linearizability.
翻译:本论文研究在运行时验证线性化的问题,其中需要开发并发算法以验证给定并发共享对象实现的当前执行是否是线性化的。本文表明,无论基本对象具有何种共识能力,对于一些常见的顺序对象,运行时验证线性化是不可能的。然后,本文提出间接验证线性化的更强版本的解决方案。具体地,它表明:(1)可以仅使用读/写基本对象强烈验证一类并发实现的线性化(即无需共识),以及(2)任何实现也可以使用仅读/写对象转换为其在该类中对应的实现(实现相同对象)。据我们所知,这是首个完全异步和容错的任何正确性条件的运行时验证算法。一个结果是得到了简单且通用的方法来派生自我强制线性化的实现。这种类型的实现可以产生保证是线性化的输出,并能够生成它的证书,这允许设计具有可确信和取证保证的并发系统。这些结果不仅适用于线性化,还适用于一种包括其一般化的正确性条件,如集合线性化和区间线性化。