wait free synchronization - rice universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. ·...

142
wait free synchronization Maurice Herlihy, ACM TOPLAS, Jan 1991 Friday, November 5, 2010

Upload: others

Post on 14-May-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

wait free synchronization Maurice Herlihy, ACM TOPLAS, Jan 1991

Friday, November 5, 2010

johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
Lightly updated by John Mellor-Crummey 21 March 2019
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
Original slides by Tengyu Ma, 2010
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
johnmc
Typewritten Text
Page 2: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Motivation

Wait-free object model

Consensus problem

Wait-free solutions to the consensus problem

Impossibility proofs

Universal construction

Outline

Friday, November 5, 2010

Page 3: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Motivation

Wait-free object model

Consensus problem

Wait-free solutions to the consensus problem

Impossibility proofs

Universal construction

Outline

Friday, November 5, 2010

Page 4: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

motivation

Concurrent objects in shared memory

Traditional approach: mutual exclusion using locks

Some problems with mutual exclusion

no fault tolerance

a thread may fail in the critical section

a slow thread may delay others

Friday, November 5, 2010

Page 5: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Objects without Waiting?

New approach: wait-free concurrent object

a thread can proceed independent of others

Questions:

what wait-free objects are impossible?

how can we implement wait-free objects?

Friday, November 5, 2010

Page 6: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

The main problem

Given two concurrent objects X, Y.

Is it possible to implement X by using Y?

Friday, November 5, 2010

Page 7: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Motivation

Wait-free object model

Consensus problem

Wait-free solutions to the consensus problem

Impossibility proofs

Universal construction

Outline

Friday, November 5, 2010

Page 8: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

wait free concurrent objectS

Definition: A concurrent object is wait-free if every thread completes a method in finite number of steps

Friday, November 5, 2010

Page 9: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

The main question

How to implement concurrent object X by Y?

Previous work

from single-writer single-reader boolean safe register, we can build multi-writer multi-reader atomic register

This paper shows that an atomic register is a weak concurrent object

Friday, November 5, 2010

Page 10: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Understanding The Possibilities

Theorem: It is impossible to build a wait-free queue from atomic registers

How can one prove theorem like this?

Basic idea:

determine a consensus number for each type of concurrent object

show that objects with low consensus number cannot implement ones with high consensus number

Friday, November 5, 2010

Page 11: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Motivation

Wait-free object model

Consensus problem

Wait-free solutions to the consensus problem

Impossibility proofs

Universal construction

Outline

Friday, November 5, 2010

Page 12: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

consensus problem

Suppose there are n threads

Each thread starts with an input value

By executing some protocol, each outputs a value

Three requirements:

Consistency: all threads decide the same value

Wait free: every thread eventually decides some value

Validity: the value decided is from the set of inputs

Friday, November 5, 2010

Page 13: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Parameters For consensus

Two factors that should be specified

What shared data-structure is used?

How many threads?

Friday, November 5, 2010

Page 14: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

consensus number

The consensus number (CN) for object type X is the largest number n, for which there exists a consensus protocol of n threads using objects of type X and atomic registers.

Object Supports n-thread consensus protocol

Friday, November 5, 2010

Page 15: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Consensus Number

Consensus number measures synchronization power

Classify objects by consensus number (CN)

objects with different CN in different classes

object with CN N cannot implement any objects with CN of M > N.

Friday, November 5, 2010

Page 16: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Consensus hierarchy

consensus number Objects

1 register

2 test&set, swap, fetch&add, queue,stack

... ......

2n-2 n-register assignment

.... ......

memory to memory move and swap, augmented queue, compare&swap,fetch&cons, sticky byte

Friday, November 5, 2010

Page 17: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Motivation

Wait-free object model

Consensus problem

Wait-free solutions to the consensus problem

Impossibility proofs

Universal construction

Outline

Friday, November 5, 2010

Page 18: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Queue consensus number

Theorem: Queue has consensus number at least 2

Friday, November 5, 2010

Page 19: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Queue consensus number

Theorem: Queue has consensus number at least 2Proof

Queue initially with two entries 0,1Two shared atomic registers prefer[0], prefer[1]

Friday, November 5, 2010

Page 20: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Queue consensus number

Theorem: Queue has consensus number at least 2Proof

Queue initially with two entries 0,1Two shared atomic registers prefer[0], prefer[1]

Friday, November 5, 2010

Page 21: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Queue consensus number

Theorem: Queue has consensus number at least 2Proof

Queue initially with two entries 0,1Two shared atomic registers prefer[0], prefer[1]

If deque() = 1, the thread can alwaysread the value written by the other. Why?

Friday, November 5, 2010

Page 22: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Queue consensus number

Theorem: Queue has consensus number at least 2Proof

Queue initially with two entries 0,1Two shared atomic registers prefer[0], prefer[1]

If deque() = 1, the process can alwaysread the value written by the other. Why?

Is it wait-free ?

Friday, November 5, 2010

Page 23: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Augmented queue consensus number

Definition: An augmented queue is a FIFO queue with a peek operation, which returns the head of the queue without changing it.

Friday, November 5, 2010

Page 24: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Augmented queue consensus number

Theorem: Augmented Queue has infinite consensus number

Definition: An augmented queue is a FIFO queue with apeek operation, which returns the head of the queue without changing it.

Friday, November 5, 2010

Page 25: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Augmented queue consensus number

Algorithm 1 Algorithm for Pi

Require: Pi has input vi1: enq(vi)2: return peek()

Theorem: Augmented Queue has infinite consensus number

Definition: An augmented queue is a FIFO queue with a peek operation, which returns the head of the queue without changing it.

Friday, November 5, 2010

Page 26: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Augmented queue consensus number

Algorithm 1 Algorithm for Pi

Require: Pi has input vi1: enq(vi)2: return peek()

Theorem: Augmented Queue has infinite consensus number

Is it wait-free?

Definition: An augmented queue is a FIFO queue with peek operation which return the head of the queue without changing it.

Friday, November 5, 2010

Page 27: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

n-register assignment

Definition(Multiple Assignment): The expressionr1, r2, . . . , rn := v1, . . . , vn

atomically assign each value vi to each register ri

Theorem: Registers with atomic m-assignment have consensus number at least m

Friday, November 5, 2010

Page 28: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

n-register assignment cont’d

p1

p2

p3

p4

p5

r12

r13

r14

r15

r23

r3

r1

r2

r4

r5 Proof:

Each thread has a single-writer register.

Each two threads share a multi-writer register

Algorithm 1 Algorithm for Pi

1: atomically assign ri, ri1, ri2, . . . , rin := vi, . . . , vi2: return determineFirstAssignment()

Friday, November 5, 2010

Page 29: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

n-register assignment

p1

p2

p3

p4

p5

Algorithm 1 Algorithm for pi1: atomically assign ri, ri1, . . . , rin := v1, . . . , vi2: return determineFirstAssignment()

Algorithm 2 determineFirstAssignment

for all 1 i < j n do

determineOrder(i,j)end for

Algorithm 3 determineOrder(i,j)

Ensure: determine the order between occurred assignment1: if rij has not been initialized then

2: assignments by pi, pj has not occurred.3: else if ri is not initialized but rj is initialized then

4: pj precedes pi5: else if rj is not initialized but ri is initialized then

6: pi precedes pj7: else

8: if ri = rij then

9: pj precedes pi10: else

11: pi precedes pj12: end if

13: end if

Friday, November 5, 2010

Page 30: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

n-register assignment

v1 v1

v1

v1v1

p1

p2

p3

p4

p5

Algorithm 1 Algorithm for pi1: atomically assign ri, ri1, . . . , rin := v1, . . . , vi2: return determineFirstAssignment()

Algorithm 2 determineFirstAssignment

for all 1 i < j n do

determineOrder(i,j)end for

Algorithm 3 determineOrder(i,j)

Ensure: determine the order between occurred assignment1: if rij has not been initialized then

2: assignments by pi, pj has not occurred.3: else if ri is not initialized but rj is initialized then

4: pj precedes pi5: else if rj is not initialized but ri is initialized then

6: pi precedes pj7: else

8: if ri = rij then

9: pj precedes pi10: else

11: pi precedes pj12: end if

13: end if

Friday, November 5, 2010

Page 31: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

n-register assignment

v1 v1

v1v1

p1

p2

p3

p4

p5

v3

v3

v3

v3

v3

Algorithm 1 Algorithm for pi1: atomically assign ri, ri1, . . . , rin := v1, . . . , vi2: return determineFirstAssignment()

Algorithm 2 determineFirstAssignment

for all 1 i < j n do

determineOrder(i,j)end for

Algorithm 3 determineOrder(i,j)

Ensure: determine the order between occurred assignment1: if rij has not been initialized then

2: assignments by pi, pj has not occurred.3: else if ri is not initialized but rj is initialized then

4: pj precedes pi5: else if rj is not initialized but ri is initialized then

6: pi precedes pj7: else

8: if ri = rij then

9: pj precedes pi10: else

11: pi precedes pj12: end if

13: end if

Friday, November 5, 2010

Page 32: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

n-register assignment

v1

v1

p1

p2

p3

p4

p5

v3

v3 v3

v5

v5v5

v5

v5

v3

Algorithm 1 Algorithm for pi1: atomically assign ri, ri1, . . . , rin := v1, . . . , vi2: return determineFirstAssignment()

Algorithm 2 determineFirstAssignment

for all 1 i < j n do

determineOrder(i,j)end for

Algorithm 3 determineOrder(i,j)

Ensure: determine the order between occurred assignment1: if rij has not been initialized then

2: assignments by pi, pj has not occurred.3: else if ri is not initialized but rj is initialized then

4: pj precedes pi5: else if rj is not initialized but ri is initialized then

6: pi precedes pj7: else

8: if ri = rij then

9: pj precedes pi10: else

11: pi precedes pj12: end if

13: end if

Friday, November 5, 2010

Page 33: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Motivation

Wait-free object model

Consensus problem

Wait-free solutions to the consensus problem

Impossibility proofs

Universal construction

Outline

Friday, November 5, 2010

Page 34: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

impossibility results

Proof Terminology

Protocol state: The states of all the concurrent objects and the internal states of the algorithms run in every processes

A state is bivalent if starting from this state, any decision is still possible.

A state is x-valent if starting from this state, the only possible decision value is x.

A state is univalent if it is x-valent for some value x

Friday, November 5, 2010

Page 35: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Examples

A state is x-valent if starting from this state, the only possible decision value is x.

A state is bivalent if starting from this state, either decision is still possible.

A state is univalent if it is x-valent for some value x

Friday, November 5, 2010

Page 36: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Examples

A state is x-valent if starting from this state, the only possible decision value is x.

A state is bivalent if starting from this state, either decision is still possible.

A state is univalent if it is x-valent for some value x

Friday, November 5, 2010

Page 37: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Examples

A state is x-valent if starting from this state, the only possible decision value is x.

A state is bivalent if starting from this state, either decision is still possible.

A state is univalent if it is x-valent for some value x

v0 v1 bivalent?

0 1

prefer[0] prefer[1]

Queue

Friday, November 5, 2010

Page 38: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Examples

A state is x-valent if starting from this state, the only possible decision value is x.

A state is bivalent if starting from this state, either decision is still possible.

A state is univalent if it is x-valent for some value x

v0 null bivalent?

1

prefer[0] prefer[1]

Queue

Friday, November 5, 2010

Page 39: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Decision step

A decision step is an operation which carries the protocol from a bivalent state to a univalent state.

Proposition: There exists a state, such that every feasible operation on it is a decision step.

The state should be reachable from the initial state.

Friday, November 5, 2010

Page 40: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Decision step

A decision step is an operation which carries the protocol from a bivalent state to a univalent state.

Proposition: There exists a state, such that every feasible operation on it is a decision step.

The state should be reachable from the initial state.

Friday, November 5, 2010

Page 41: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Decision step

A decision step is an operation which carries the protocol from a bivalent state to a univalent state.

Proposition: There exists a state, such that every feasible operation on it is a decision step.

The state should be reachable from the initial state.

The first deque() operation is the

decision step

Friday, November 5, 2010

Page 42: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Decision step

A decision step is an operation which carries the protocol from a bivalent state to a univalent state.

Proposition: There exists a state, such that every feasible operation on it is a decision step.

The state should be reachable from the initial state.

The first deque() operation is the

decision step

v0 v1

0 1

prefer[0] prefer[1]

Queue

Friday, November 5, 2010

Page 43: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Decision step

A decision step is an operation which carries the protocol from a bivalent state to a univalent state.

Proposition: There exists a state, such that every feasible operation on it is a decision step.

The state should be reachable from the initial state.

The first deque() operation is the

decision step

v0 v1

0 1

prefer[0] prefer[1]

Queue Only two feasible operations:the deque() of P1, and the

deque() of P2Friday, November 5, 2010

Page 44: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Critical State

Proposition: There exists a state, which can be reached from the initial state, such that every feasible operation on it is a decision step.

We call this state critical state

Friday, November 5, 2010

Page 45: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Critical State

Proposition: There exists a state, which can be reached from the initial state, such that every feasible operation on it is a decision step.

We call this state critical state

initial state

Some initial state is

bivalent

Friday, November 5, 2010

Page 46: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Critical State

Proposition: There exists a state, which can be reached from the initial state, such that every feasible operation on it is a decision step.

We call this state critical state

initial state

Some initial state is

bivalent

bivalent

P1’s operation

Friday, November 5, 2010

Page 47: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Critical State

Proposition: There exists a state, which can be reached from the initial state, such that every feasible operation on it is a decision step.

We call this state critical state

initial state

Some initial state is

bivalent

bivalent

P1’s operation

bivalent

P2’s

Friday, November 5, 2010

Page 48: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Critical State

Proposition: There exists a state, which can be reached from the initial state, such that every feasible operation on it is a decision step.

We call this state critical state

initial state

Some initial state is

bivalent

bivalent

P1’s operation

bivalent

P2’s

bivalent

P1’s

Friday, November 5, 2010

Page 49: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Critical State

Proposition: There exists a state, which can be reached from the initial state, such that every feasible operation on it is a decision step.

We call this state critical state

initial state

Some initial state is

bivalent

bivalent

P1’s operation

bivalent

P2’s

bivalent

P1’s

bivalent

P2’s

bivalent

P2’s

Friday, November 5, 2010

Page 50: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Critical State

Proposition: There exists a state, which can be reached from the initial state, such that every feasible operation on it is a decision step.

We call this state critical state

initial state

Some initial state is

bivalent

bivalent

P1’s operation

bivalent

P2’s

bivalent

P1’s

bivalent

P2’s

bivalent

P2’s

Can not run forever!Wait-free property

Friday, November 5, 2010

Page 51: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Critical State

Proposition: There exists a state, which can be reached from the initial state, such that every feasible operation on it is a decision step.

We call this state critical state

initial state

Some initial state is

bivalent

bivalent

P1’s operation

bivalent

P2’s

bivalent

P1’s

bivalent

P2’s

bivalent

P2’s

Can not run forever!Wait-free property

Finally reach a critical state! Friday, November 5, 2010

Page 52: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

impossibility results

Theorem: atomic registers cannot simulate 2-processes consensus protocol.

Proof structure: Assume that there exists a protocol. Find the critical state (the state for which every operation on it is decision step).

Enumerate all the possible cases of the operations following this state.

critical state: S

Friday, November 5, 2010

Page 53: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Atomic Registers - I/3

Consider: Two operations following the critical state are on different registers.

Trivial since the two operations on different objects can be commuted without changing the final state.

critical state: S

y-valentx-valent

P read

r1

Q write r2bivalent.

Every following state univalent

Every feasible operation on the critical state is on the same base object (register).

Friday, November 5, 2010

Page 54: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Atomic Registers - I/3

Consider: Two operations following the critical state are on different registers.

Trivial since the two operations on different objects can be commuted without changing the final state.

critical state: S

State S3

y-valentx-valent

P read

r1

Q write r2

Q write r2 P read

r1

bivalent.Every following state univalent

Every feasible operation on the critical state is on the same base object (register).

Friday, November 5, 2010

Page 55: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Atomic Registers - I/3

Consider: Two operations following the critical state are on different registers.

Trivial since the two operations on different objects can be commuted without changing the final state.

critical state: S

State S3

y-valentx-valent

P read

r1

Q write r2

Q write r2 P read

r1

bivalent.Every following state univalent

ContradictionEvery feasible operation on the critical state is on the same base object (register).

Friday, November 5, 2010

Page 56: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Atomic Registers - I/3

Consider: Two operations following the critical state are on different registers.

Trivial since the two operations on different objects can be commuted without changing the final state.

critical state: S

State S3

y-valentx-valent

P read

r1

Q write r2

Q write r2 P read

r1

bivalent.Every following state univalent

ContradictionEvery feasible operation on the critical state is on the same base object (register). this argument is valid in every

impossibility proofFriday, November 5, 2010

Page 57: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Atomic Registers - 2/3critical state: S

y-valentx-valent

P read

Q opr

decides y

Q runs alone

x-valentQ opr

decides x

Q runs alone

Equivalent for Q!Q can not see the

difference

Two operations on the same register.

1. one of the operations is read

2. each of the operations is write

Friday, November 5, 2010

Page 58: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Atomic Registers - 3/3critical state: S

y-valentx-valent

P writ

e Q write

decides y

Q runs alone

x-valentQ write

decides x

Q runs alone

Equivalent for Q!Q can not see the

difference

overwrite the register

Two operations on the same register.

1. one of the operations is read

2. each of the operations is write

Friday, November 5, 2010

Page 59: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Motivation

Wait-free object model

Consensus problem

Wait-free solutions to the consensus problem

Impossibility proofs

Universal construction

Outline

Friday, November 5, 2010

Page 60: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

universality Results

Every object with consensus number n, can implement any other concurrent object within a system of n threads

Consensus object

a consensus protocol with a register where the decision value is written

has a function decide(value: input). a thread calls decide to invoke the consensus protocol and get the decision value as result.

every object with consensus number n can implement the consensus object within a system of n threads.

Friday, November 5, 2010

Page 61: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

universality Results

Implement a concurrent object by consensus objects and atomic registers

General idea: An execution of a concurrent object can be presented as a linked list of cells.

Friday, November 5, 2010

Page 62: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

invnew-state

after

before

seq

a basic cell

result

The general idea: An execution of a concurrent object can be presented as a linked list of cells.

A cell has the following fields

seq: sequence number indicating the order of the operations. Increase by 1 for successive cells

inv: invocation (operation name, argument name)

new-state: the new state of the object

new-result: the result value of the operation

before, after: point to the cell previous and next to it.

REpresenting a Concurrent Object

Friday, November 5, 2010

Page 63: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

A linked list of cells

inv=initial-state

afterbefore=

seq=1

result

?

?

anchor

[x]

after

before

seq=2enq(x)

?

enq(x)

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Friday, November 5, 2010

Page 64: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

undecided

seq=0peek()

undecided

P1’s next operation:peek()

undecided

undecided

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

When a thread invokes an operation, it creates a cell with operation information and sequence number 0.

Maintains a linked list of cells

Head

Friday, November 5, 2010

Page 65: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

undecided

seq=0peek()

undecided

P1’s next operation:peek()

undecided

undecided

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

We say a thread threads a cell if it adds the cell into the linked list.

Naive idea: use a consensus protocol to decide which cell should be threaded next.

Head

Friday, November 5, 2010

Page 66: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

undecided

seq=0peek()

undecided

P1’s next operation:peek()

undecided

undecided

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

We say a process threads a cell if it adds the cell into the linked list.

Naive idea: use a consensus protocol to decide which cell should be threaded next.

Head

ConsensusObject

thread P1’s operation!

Friday, November 5, 2010

Page 67: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

undecided

seq=0peek()

undecided

P1’s next operation:peek()

undecided

undecided

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

Then add the decided cell into the linked list

Head

ConsensusObject

thread P1’s operation!

Friday, November 5, 2010

Page 68: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

undecided

seq=0peek()

undecided

undecided

undecided

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

Then add the decided cell into the linked list

Head

Friday, November 5, 2010

Page 69: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

undecided

seq=0peek()

undecided

undecided

undecided

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

Then add the decided cell into the linked list

Head

Friday, November 5, 2010

Page 70: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

undecided

seq=0peek()

undecided

undecided

undecided

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

Then add the decided cell into the linked list

update fields of the cell

Head

Friday, November 5, 2010

Page 71: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

seq=0peek()

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

Then add the decided cell into the linked list

update fields of the cell

Head

Friday, November 5, 2010

Page 72: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

seq=5peek()

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

Then add the decided cell into the linked list

update fields of the cell

Head

peek()

Friday, November 5, 2010

Page 73: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

seq=5peek()

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

Then add the decided cell into the linked list

update fields of the cell

Head

y

afterbefore

peek()

[y]

Friday, November 5, 2010

Page 74: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

seq=5peek()

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

P1 announces another cell for operation enq(t)

Head

y

afterbefore

peek()

[y]

seq=0enq(t)

undecidedundecided

undecided

undecided

P1’s next operation:enq(t)

Friday, November 5, 2010

Page 75: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

seq=5peek()

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

P1 announces another cell for operation enq(t)

Head

y

afterbefore

peek()

[y]

seq=0enq(t)

undecidedundecided

undecided

undecided

P1’s next operation:enq(t)

Friday, November 5, 2010

Page 76: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

seq=5peek()

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

P1 announces another cell for operation enq(t)

Head

y

afterbefore

peek()

[y]

seq=0enq(t)

undecidedundecided

undecided

undecided

P1’s next operation:enq(t)

ConsensusObject

thread P1’s operation!

Friday, November 5, 2010

Page 77: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

seq=5peek()

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

Head

y

afterbefore

peek()

[y]

seq=0enq(t)

undecidedundecided

undecided

undecided

P1’s next operation:enq(t)

P1 announces another cell for operation enq(t)

Friday, November 5, 2010

Page 78: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

seq=5peek()

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

Head

y

afterbefore

peek()

[y]

seq=0enq(t)

undecidedundecided

undecided

undecided

P1’s next operation:enq(t)

P1 announces another cell for operation enq(t)

Friday, November 5, 2010

Page 79: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

seq=5peek()

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

Head

y

afterbefore

peek()

[y]

seq=0enq(t)

undecidedundecided

undecided

undecided

P1’s next operation:enq(t)

P1 announces another cell for operation enq(t)

Friday, November 5, 2010

Page 80: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

seq=5peek()

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

Head

y

afterbefore

peek()

[y]

enq(t)

P1’s next operation:enq(t)

P1 announces another cell for operation enq(t)

Friday, November 5, 2010

Page 81: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

seq=5peek()

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

Head

y

afterbefore

peek()

[y]

seq=6enq(t)

P1’s next operation:enq(t)

[y,t]?

after

before

P1 announces another cell for operation enq(t)

Friday, November 5, 2010

Page 82: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

seq=5peek()

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

Head

y

afterbefore

peek()

[y]

seq=6enq(t)

P1’s next operation:enq(t)

[y,t]?

after

before

Two problems:a) Not wait free. Why?

Friday, November 5, 2010

Page 83: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

seq=5peek()

undecided

seq=0eqn(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

Head

y

afterbefore

peek()

[y]

seq=6enq(t)

P1’s next operation:enq(t)

[y,t]?

after

before

Two problems:a) Not wait free. Why?

P2 might be too slow or too unfortunate such that it loses all the consensus!

Friday, November 5, 2010

Page 84: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

Current List:

seq=5peek()

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

Head

y

afterbefore

peek()

[y]

seq=6enq(t)

P1’s next operation:enq(t)

[y,t]?

after

before

Two problems:a) Not wait free. b) Consensus object can used only once.

Friday, November 5, 2010

Page 85: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

seq=5peek()

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

y

afterbefore

peek()

[y]

seq=6enq(t)

P1’s next operation:enq(t)

[y,t]?

after

before

Solution: 1. an array of atomic registers head[] pointing to the latest cell each process has seen2. an array of atomic registers announce[] pointing to cells to be threaded

Friday, November 5, 2010

Page 86: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

seq=5peek()

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

y

afterbefore

peek()

[y]

seq=6enq(t)

P1’s next operation:enq(t)

[y,t]?

after

before

head[1] head[2] head[3]

Friday, November 5, 2010

Page 87: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

seq=5peek()

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

y

afterbefore

peek()

[y]

seq=6enq(t)

P1’s next operation:enq(t)

[y,t]?

after

before

head[1] head[2] head[3]

ann[1] ann[2] ann[3]

Friday, November 5, 2010

Page 88: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

[x,y]

after

before

seq=3enq(y)

?

enq(y)

[y]

after

before

seq=4deq()

deq()

x

seq=5peek()

undecided

seq=0enq(z)

undecided

P2’s next operation:enq(z)

undecided

undecided

y

afterbefore

peek()

[y]

seq=6enq(t)

P1’s next operation:enq(t)

[y,t]?

after

before

•Make the after pointer a consensus object

•The call c.after.decide() will return the decision value of the consensus and write the decision value to c.after

Friday, November 5, 2010

Page 89: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

Friday, November 5, 2010

Page 90: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

seq = 0 indicates that the cell has not been threaded

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

Friday, November 5, 2010

Page 91: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

Friday, November 5, 2010

Page 92: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

make the head be as close to the end of the list as possible

Friday, November 5, 2010

Page 93: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

actually it is a loop. just for brevity. no atomicity requirement

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

Friday, November 5, 2010

Page 94: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

The main loop. iterates as long as the cell is not threaded

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

Friday, November 5, 2010

Page 95: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

Friday, November 5, 2010

Page 96: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

h is the cell that thethread tries to help when its head pointer points to c

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

Friday, November 5, 2010

Page 97: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

Friday, November 5, 2010

Page 98: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

check if h needs help, or if h has not yet been threaded.

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

Friday, November 5, 2010

Page 99: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

otherwise try to thread own cell

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

Friday, November 5, 2010

Page 100: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Observe that c.after is a consensus object and however many times decide() is called, the return value is the same.

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

Friday, November 5, 2010

Page 101: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

Friday, November 5, 2010

Page 102: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

Friday, November 5, 2010

Page 103: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

However many times d is updated by different processes, the result is the same!!

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

Friday, November 5, 2010

Page 104: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

Friday, November 5, 2010

Page 105: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =0after

cell of P2 ann[2]

head[2]head[1]

ann[1]

Friday, November 5, 2010

Page 106: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =0after

cell of P2 ann[2]

head[2]head[1]

ann[1]

Friday, November 5, 2010

Page 107: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =0after

cell of P2 ann[2]

head[2]head[1]

ann[1]

Friday, November 5, 2010

Page 108: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =0after

cell of P2 ann[2]

head[2]head[1]

ann[1]

Friday, November 5, 2010

Page 109: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =0after

cell of P2 ann[2]

head[2]head[1]

ann[1]

wait-freeP2 should

decide

Friday, November 5, 2010

Page 110: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =0after

cell of P2 ann[2]

head[2]head[1]

ann[1]

wait-freeP2 should

decide

Friday, November 5, 2010

Page 111: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]

Friday, November 5, 2010

Page 112: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]

Friday, November 5, 2010

Page 113: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]

Friday, November 5, 2010

Page 114: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]seq =0after

Friday, November 5, 2010

Page 115: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]seq =0after

Friday, November 5, 2010

Page 116: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]seq =0after

Friday, November 5, 2010

Page 117: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]seq =0after

Friday, November 5, 2010

Page 118: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]seq =0after

Friday, November 5, 2010

Page 119: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]seq =0after

seq =0after

Friday, November 5, 2010

Page 120: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]seq =0after

seq =0after

Friday, November 5, 2010

Page 121: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]seq =0after

seq =0after

P2 tries to help P1

Friday, November 5, 2010

Page 122: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]seq =0after

seq =0after

Friday, November 5, 2010

Page 123: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]seq =0after

seq =0after

P1 is really slow, P2 will

not wait for it. decide ann[1].

Friday, November 5, 2010

Page 124: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]

seq =0after

seq =0after

Friday, November 5, 2010

Page 125: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]

seq =0after

seq =0after

Friday, November 5, 2010

Page 126: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]

seq =0after

seq =0after

Friday, November 5, 2010

Page 127: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]

seq =3after

seq =0after

P1’s opr

Friday, November 5, 2010

Page 128: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]

seq =3after

seq =0after

P1’s opr

Friday, November 5, 2010

Page 129: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]

seq =3after

seq =0after

P1’s opr

It tries to help P2 !Indeed, P2 needs help

Friday, November 5, 2010

Page 130: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]

seq =3after

seq =0after

P1’s opr

Friday, November 5, 2010

Page 131: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]

seq =3after

seq =0after

P1’s opr

what is the possible result?

Friday, November 5, 2010

Page 132: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]

seq =3after

seq =0after

P1’s opr

Friday, November 5, 2010

Page 133: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]

seq =3after

seq =0after

P1’s opr

Only the this can be returned!Since c.after is a consensus object and now c = head[1] = anchoranchor.after.decide() has already returned the value to P2

Friday, November 5, 2010

Page 134: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]

seq =3after

seq =0after

P1’s opr

P1 can only rewrite the second cell with the same field value But it can quit the loop quickly since its cell has been threaded :)

Friday, November 5, 2010

Page 135: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]

seq =3after

seq =0after

P1’s opr

P1 can only rewrite the second cell with the same field value But it can quit the loop quickly since its cell has been threaded :)

Friday, November 5, 2010

Page 136: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]

seq =3after

seq =0after

P1’s opr

P1 can only rewrite the second cell with the same field value But it can quit the loop quickly since its cell has been threaded :)

Friday, November 5, 2010

Page 137: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

initialize the cell with seq = 0

let announce[P] point to it.

head[P] = max{head[1], . . . , head[n]}while announce[P].seq = 0 do

c = head[P]

h = announce[c.seq mod n + 1]

if h.seq = 0 then

prefer = h

else

prefer = announce[P]

end if

d = c.after.decide(prefer)

d.seq = c.seq + 1

update the field of d according to c.inv, c.new-state

head[P] = d

end while

return announce[P].result

seq =1after

anchor

seq =2after

ann[2]

head[2]head[1]

ann[1]

seq =3after

seq =0after

P1’s opr

P1 can only rewrite the second cell with the same field value But it can quit the loop quickly since its cell has been threaded :)

Friday, November 5, 2010

Page 138: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Proof of the correctness

Observations

non-zero sequence number indicates successful threading

the consensus protocols guarantee that the fields of the cells will not be updated with different values.

at cell with sequence number k, every thread tries to help thread(k+1) mod n if a cell is announced by thread k+1, after at most n more cells have been threaded

everyone will check if process k+1 needs help

everyone will help

Friday, November 5, 2010

Page 139: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

more practical constructions

New universal construction

P. Choung, F. Ellen, V. Ramachandran “A universal construction for wait-free transaction friendly data structure”.

implements any shared data structure with θ(s+p) space, where s is the size of the shared data structure and p is the number of processes.

uses only CAS and registers as base objects.

Ad-hoc wait-free data structures

lower overhead by using a purpose-built construction

Friday, November 5, 2010

Page 140: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Conclusions

Wait-free synchronization is possible, practical, and useful!

Friday, November 5, 2010

Page 141: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

References

Maurice Herlihy, “Wait-free synchronization”

Lynch and Tuttle, “An Introduction to Input/Output Automata”

Maurice Herlihy & Nir Shavit “Lecture notes of Art of multiprocessor computing.

L. Lamport “How to make a multiprocessor computer that correctly executes multiprocess programs.”

Friday, November 5, 2010

Page 142: wait free synchronization - Rice Universityjohnmc/comp522/lecture-notes/... · 2019. 3. 21. · Consensus problem Wait-free solutions to the consensus problem Impossibility proofs

Linearizability vs sequential consistency

Linearizability is stronger than sequential consistency.

sequential consistency is not composable:(not a local property)

If two objects are both sequential consistent, the composition of them might be not.

linearizability has composability.

We only need to study isolated object

Friday, November 5, 2010