Order out of Chaos: Proving Linearizability Using Local Views

05/10/2018
by   Yotam M. Y. Feldman, et al.
0

Proving the linearizability of highly concurrent data structures, such as those using optimistic concurrency control, is a challenging task. The main difficulty is in reasoning about the view of the memory obtained by the threads, because as they execute, threads observe different fragments of the data structure from different points in time. Until today, every linearizability proof has tackled this challenge from scratch. We present a unifying proof argument capable of proving the linearizability of several highly concurrent data structures, including an optimistic self-balancing binary search tree and the Lazy List algorithm. Our framework facilitates sequential reasoning about the view of a thread, as if it traverses the data structure without interference from other operations. Our key contribution is showing that properties of reachability along search paths can be deduced for concurrent traversals from interference-free traversals. This greatly simplifies linearizability proofs. At the heart of our proof method lies a notion of order on the memory, corresponding to the order in which locations in memory are read by the threads, which guarantees a certain notion of consistency between the view of the thread and the actual memory. To apply our framework, the user proves that the data structure satisfies certain conditions, relating to acyclicity of the data structure and the preservation of search paths to locations affected by interfering writes. Establishing the conditions, as well as the full linearizability proof, reduces to simple concurrent reasoning. The result is a clear and comprehensible correctness proof. Our framework elucidates common patterns underlying several existing data structures, and could pave the way to design new data structures based on these principles.

READ FULL TEXT

page 4

page 26

page 33

page 34

page 35

page 36

research
10/02/2020

Proving Highly-Concurrent Traversals Correct

Modern highly-concurrent search data structures, such as search trees, o...
research
04/17/2020

Reducing Commutativity Verification to Reachability with Differencing Abstractions

Commutativity of data structure methods is of ongoing interest, with roo...
research
10/12/2021

A Simple Way to Verify Linearizability of Concurrent Stacks

Linearizability is a commonly accepted correctness criterion for concurr...
research
11/09/2017

Go with the Flow: Compositional Abstractions for Concurrent Data Structures (Extended Version)

Concurrent separation logics have helped to significantly simplify corre...
research
11/08/2020

Generating Concurrent Programs From Sequential Data Structure Knowledge

In this paper we tackle the problem of automatically designing concurren...
research
07/11/2019

Learning Key-Value Store Design

We introduce the concept of design continuums for the data layout of key...
research
09/12/2021

Verifying Concurrent Multicopy Search Structures

Multicopy search structures such as log-structured merge (LSM) trees are...

Please sign up or login with your details

Forgot password? Click here to reset