vault backup: 2025-03-04 12:40:54
This commit is contained in:
parent
e4f6fdad25
commit
47a34c7a78
1 changed files with 8 additions and 5 deletions
|
@ -36,11 +36,15 @@ lock(i) :=
|
|||
wait Y = ⊥
|
||||
goto *
|
||||
else Y <- i
|
||||
|
||||
if X = i then return
|
||||
else FLAG[i] <- down
|
||||
|
||||
∀j.wait FLAG[j] = down
|
||||
|
||||
if Y = i then return
|
||||
else wait Y = ⊥
|
||||
|
||||
goto *
|
||||
|
||||
unlock(i) :=
|
||||
|
@ -49,15 +53,13 @@ unlock(i) :=
|
|||
return
|
||||
```
|
||||
|
||||
MUTEX proof
|
||||
|
||||
##### MUTEX proof
|
||||
How can pi enter its CS?
|
||||
![[Pasted image 20250304084537.png]]
|
||||
|
||||
![[Pasted image 20250304084901.png]]
|
||||
|
||||
Deadlock freedom
|
||||
|
||||
##### Deadlock freedom
|
||||
Let $p_i$ invoke lock
|
||||
- If it eventually wins -> √
|
||||
- If it is blocked forever, where can it be blocked?
|
||||
|
@ -73,7 +75,8 @@ Let $p_i$ invoke lock
|
|||
- 3. In the first wait Y = ⊥
|
||||
- since pj read a value different from ⊥, there is at least one pk that wrote Y before (but has not yet unlocked)
|
||||
- if $p_k$ eventually enters its CS -> ok, otherwise it must be blocked forever as well. Where?
|
||||
- ![[Pasted image 20250304090207.png]]
|
||||
- In the second wait Y = ⊥: but then there exists a $p_h$ that eventually enters its CS -> good
|
||||
- In the ∀j.wait FLAG[j]=down: this wait cannot block a process forever
|
||||
|
||||
![[Pasted image 20250304090219.png]]
|
||||
|
||||
|
|
Loading…
Reference in a new issue