From b99aea11344145a960dd43710338712b2f71c74a Mon Sep 17 00:00:00 2001 From: Marco Realacci Date: Mon, 24 Mar 2025 10:08:11 +0100 Subject: [PATCH] vault backup: 2025-03-24 10:08:11 --- .obsidian/workspace.json | 6 +++--- .../notes/7- MUTEX-free concurrency.md | 10 +++++++++- Pasted image 20250324100652.png | Bin 0 -> 33092 bytes 3 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 Pasted image 20250324100652.png diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 827bc21..b752c08 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -51,9 +51,9 @@ "type": "pdf", "state": { "file": "Concurrent Systems/slides/class 7.pdf", - "page": 9, + "page": 10, "left": -23, - "top": 171, + "top": 175, "zoom": 0.680522565320665 }, "icon": "lucide-file-text", @@ -237,6 +237,7 @@ "lastOpenFiles": [ "Concurrent Systems/slides/class 7.pdf", "Concurrent Systems/notes/7- MUTEX-free concurrency.md", + "Pasted image 20250324100652.png", "Pasted image 20250324092633.png", "Pasted image 20250324091452.png", "Concurrent Systems/notes/Pasted image 20250324082534.png", @@ -265,7 +266,6 @@ "Pasted image 20250318090733.png", "Concurrent Systems/slides/class 5.pdf", "Concurrent Systems/notes/images/Pasted image 20250317105355.png", - "Concurrent Systems/notes/images/Pasted image 20250317100456.png", "HCIW/slides/4 HUI2016-6-forcefeedback.pdf", "HCIW/slides/3b Haptic slides.pdf", "HCIW/slides/3Haptic interaction.pdf", diff --git a/Concurrent Systems/notes/7- MUTEX-free concurrency.md b/Concurrent Systems/notes/7- MUTEX-free concurrency.md index 07f7a62..ec8fe73 100644 --- a/Concurrent Systems/notes/7- MUTEX-free concurrency.md +++ b/Concurrent Systems/notes/7- MUTEX-free concurrency.md @@ -144,7 +144,15 @@ This is needed for the so called ABA problem with compare&set: if X.compare&set(tmp, v) then ... ``` - this is to ensure that the value of X has not changed in the computation -- the problem is that X can be changed twice before compare&set +- the problem is that X can be changed twice before compare&set (e.g. it was A, it became B and than came back to A) - solution: X is a pair ⟨val , seq_numb⟩, with the constraint that each modification of X increases its sequence_number - with the compare&set you mainly test that the sequence_number has not changed +TOP : a register that can be read or compare&setted + ![[Pasted image 20250324100652.png]] + +``` +push(w) := + while true do ⟨i,v,s⟩ <- TOP + conclude(i,v,s) if i=k then return FULL newtop ß ⟨i+1,w,STACK[i+1].seq_num+1⟩ if TOP.compare&set(⟨i,v,s⟩,newtop) then return OK +``` \ No newline at end of file diff --git a/Pasted image 20250324100652.png b/Pasted image 20250324100652.png new file mode 100644 index 0000000000000000000000000000000000000000..ff95fe8ba32887a071ca529e9b6d5f0a640407e8 GIT binary patch literal 33092 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 literal 0 HcmV?d00001