Mutual Exclusion Presented by: Rohan Sen (Distributed Algorithms Ch. 10)
Topics that will be covered Overview and problem statement Dijkstra’s Mutual Exclusion Algorithm Stronger Conditions for Mutual Exclusion Algorithms Lockout-free Mutual Exclusion Algorithms Single-Writer Shared Register Algorithms The Bakery Algorithm Conclusion
Overview The shared memory model Every process is a kind of state machine Set of states Three kinds of actions: input, output, internal All communication via the shared memory Exists a transition relation for all states System is input-enabled Not output and internal enabled Locality restrictions Restrictions on shared variable operations
The problem Allocation of single, indivisible, non-shareable resource among n users Steps by a user Trying protocol Critical region Exit protocol Remainder (non-critical region) U try crit exit rem External interface of a user
The problem (contd.) A shared memory system solves the mutual exclusion problem when the following conditions are satisfied: Well-formedness Mutual exclusion Progress
Dijkstra’s Mutual Exclusion Alg. Concept Use a two stage flag to indicate what stage of processing a user is in Ensure mutual exclusion by ensuring that only one flag at a time has a value to let it into the critical region
Dijkstra’s Mutual Exclusion Alg. turn rd / wr by all processes, intially arbitrary flag(i) rd by all / wr by I, initially 0 Shared Variables
Dijkstra’s Mutual Exclusion Alg.
Guarantees well-formedness Per inspection of the code Satisfies mutual exclusion By status of flag Guarantees progress More complex proof
Stronger Conditions Fairness No lockouts or starvations Kinds of fairness Low level fairness High level fairness
Stronger Conditions (contd.) Lockout freedom Any user that reaches T eventually enters C Any user that reaches E eventually enters R Time bound If each user returns resource within time c and each step is at most l, then you enter C at most b = f(l,c) after entering T Similarly, you enter R at most b = f(l,c) after entering E. Number of bypasses
PetersonNP Algorithm Concept There are k levels At each level eliminate one user n – k processes can win at level k Only one process can win at level n – 1, yielding mutual exclusion
PetersonNP Algorithm turn(k) rd / wr by all, initially arbitrary flag(i) rd by all j ≠ i / wr by I, initially 0 Shared variables
PetersonNP Algorithm
Is well formed Satisfies mutual exclusion Guarantees progress Lockout free
Alg. Using Single Writer Shared Registers (BurnsME Algorithm) Concept Check if anyone else is trying to get a lock Lay claim on the lock Check again Proceed
BurnsME Algorithm Shared variables flag(i) wr by i / rd by all j ≠ I, initially 0
BurnsME Algorithm
Is well formed Guarantees mutual exclusion Guarantees progress
Bakery Algorithm Concept FIFO after a wait-free doorway Doorway is: Everyone picks a number Waits for everyone to finish Break ties and enter critical zone
Bakery Algorithm Shared variables choosng(i) wr by i / rd by all j ≠ I, initially 0 number(i) wr by i / rd by all j ≠ I, initially 0
Bakery Algorithm
Is well formed Satisfies mutual exclusion Guarantees progress Guarantees lockout freedom
Lower bound on # registers Cannot solve mutual exclusion with <n shared variables Single writer shared variables Multi writer shared variables
Conclusion Mutual exclusion: One at a time access to a shared resource Mutual exclusion w/o fairness Mutual exclusion w/ fairness Minimizing the number of registers
Questions?