论文标题
证明高度连续的遍历正确
Proving Highly-Concurrent Traversals Correct
论文作者
论文摘要
现代高度连通的搜索数据结构(例如搜索树)通过使操作穿越数据结构而无需任何同步,从而获得了多核可伸缩性和性能。结果,众所周知,这些算法很难线索,这需要确定遍历结果正确的时间点。问题在于,遍历数据结构时进行修改会导致复杂的行为,因此需要对遍历读取的所有读取的所有交流进行复杂的推理,并写入突变数据结构。 在本文中,与典型的并发推理和先前的证明技术相比,我们提出了一种通用证明技术,该技术以明显简单的方式证明了不同步的遍历。我们的框架仅依赖于遍历的顺序属性}以及概念上简单且广泛适用的条件,涉及算法写入数据结构的方式。确定目标数据结构满足我们的状况只需要简单的并发推理,而无需考虑写入和读取的相互作用。可以使用我们的框架进一步简化这种推理。 为了展示我们的技术,我们将其应用于证明几个有趣且具有挑战性的并发二进制搜索树:逻辑订购的AVL树,柑橘树和完整的竞争友好的树。逻辑订购树和完整的竞争友好树都超出了针对简化线性性证明的先前方法的范围。
Modern highly-concurrent search data structures, such as search trees, obtain multi-core scalability and performance by having operations traverse the data structure without any synchronization. As a result, however, these algorithms are notoriously difficult to prove linearizable, which requires identifying a point in time in which the traversal's result is correct. The problem is that traversing the data structure as it undergoes modifications leads to complex behaviors, necessitating intricate reasoning about all interleavings of reads by traversals and writes mutating the data structure. In this paper, we present a general proof technique for proving unsynchronized traversals correct in a significantly simpler manner, compared to typical concurrent reasoning and prior proof techniques. Our framework relies only on sequential properties} of traversals and on a conceptually simple and widely-applicable condition about the ways an algorithm's writes mutate the data structure. Establishing that a target data structure satisfies our condition requires only simple concurrent reasoning, without considering interactions of writes and reads. This reasoning can be further simplified by using our framework. To demonstrate our technique, we apply it to prove several interesting and challenging concurrent binary search trees: the logical-ordering AVL tree, the Citrus tree, and the full contention-friendly tree. Both the logical-ordering tree and the full contention-friendly tree are beyond the reach of previous approaches targeted at simplifying linearizability proofs.