diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index f5395f5..e1d54a9 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -231,9 +231,9 @@ }, "active": "0d64f519fd7f9420", "lastOpenFiles": [ - "Concurrent Systems/notes/7- MUTEX-free concurrency.md", - "Concurrent Systems/notes/8 - Enhancing Liveness Properties.md", "Concurrent Systems/slides/class 8.pdf", + "Concurrent Systems/notes/8 - Enhancing Liveness Properties.md", + "Concurrent Systems/notes/7- MUTEX-free concurrency.md", "Concurrent Systems/notes/images/Pasted image 20250324091452.png", "Concurrent Systems/slides/class 7.pdf", "Concurrent Systems/notes/6 - Atomicity.md", diff --git a/Concurrent Systems/notes/8 - Enhancing Liveness Properties.md b/Concurrent Systems/notes/8 - Enhancing Liveness Properties.md index aa34482..4212bc1 100644 --- a/Concurrent Systems/notes/8 - Enhancing Liveness Properties.md +++ b/Concurrent Systems/notes/8 - Enhancing Liveness Properties.md @@ -1,2 +1,9 @@ Can we take the most basic protocol that satisfies the most basic liveness property (obstruction freedom) and "upgrade" it to bounded wait freedom? +**Contention manager:** is an object that allows progress of processes by providing contention-free periods for completing their invocations. It provides 2 operations: +- `need_help(i)`: invoked by $p_i$ when it discovers that there is contention +- `stop_help(i)`: invoked by $p_{i}$ when it terminates its current invocation + +**Enriched implementation:** when a process realizes that there is contention, it invokes need_help; when it completes its current operation, it invokes stop_help. + +Why is it different from lock/unlock? Because this allows failures, and they can also happen in the contention-free period. \ No newline at end of file