master-degree-notes/Concurrent Systems/notes/6a - Alternatives to Atomicity.md

809 B
Raw Blame History

Let us define op ->_{proc} op' to hold whenever there exists a process p that issues both operations with res[op] happening before inv[op'].

Def: a complete history is sequentially consistent if there exists a sequential history 𝑆 s.t. !

!

Warning

The problem with sequential consistency is that it is NOT compositional.

Consider for example the following two processes:

p1: Q.enq(a); Q'.enq(b'); Q'deq()->b'
p2: Q'.enq(a'); Q.enq(b); Q.deq()->b

In isolation, both processes are sequentially consistent.

However, no total order on the previous 6 operations respects the semantics of a queue: - if p1 receives b' from Q'.deq, we have that Q'.enq(a'), must arrive after Q'.enq(b') - to respect \to_{proc}