diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 2827bcd..827bc21 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -51,9 +51,9 @@ "type": "pdf", "state": { "file": "Concurrent Systems/slides/class 7.pdf", - "page": 8, + "page": 9, "left": -23, - "top": 103, + "top": 171, "zoom": 0.680522565320665 }, "icon": "lucide-file-text", diff --git a/Concurrent Systems/notes/7- MUTEX-free concurrency.md b/Concurrent Systems/notes/7- MUTEX-free concurrency.md index 43d41d7..6ec93e1 100644 --- a/Concurrent Systems/notes/7- MUTEX-free concurrency.md +++ b/Concurrent Systems/notes/7- MUTEX-free concurrency.md @@ -128,4 +128,14 @@ pop() := ``` REMARK: crashes do not compromise progress! -PROBLEM: unboundedness of REG is not realistic \ No newline at end of file +PROBLEM: unboundedness of REG is not realistic + +### A Non-blocking Bounded Stack +Idea: every operation is started by the invoking process and finalized by the next process + +`STACK[0...k]` : an array of registers that can be read or compare&setted + `STACK[i]` is actually a pair ⟨val , seq_numb⟩ initialized at ⟨⊥,0⟩ + +This is needed for the so called ABA problem with compare&set: +- A typical use of compare&set is + ```stm``` \ No newline at end of file