vault backup: 2025-03-04 08:29:45
This commit is contained in:
parent
8a8d2020d2
commit
62d5142515
3 changed files with 24 additions and 2 deletions
|
@ -0,0 +1,21 @@
|
|||
Peterson's algorithm cost $O(n^2)$
|
||||
A first way to reduce this cost is by using a tournament of MUTEX between pairs of processes:
|
||||
![[Pasted image 20250304082459.png|350]]
|
||||
|
||||
Of course this is a binary tree, and the height of a binary tree is logaritmic to the number of leaves. A process then wins after $\lceil \log_{2}n \rceil$ competitions $\to O(\log n)$ cost.
|
||||
|
||||
But we can do better. Let's see an idea of a constant-time algorithm.
|
||||
|
||||
```
|
||||
Initialize Y at ⊥, X at any value (e.g., 0)
|
||||
|
||||
lock(i) :=
|
||||
x <- i
|
||||
if Y != ⊥ then FAIL
|
||||
else Y <- i
|
||||
if X = i then return
|
||||
else fail
|
||||
|
||||
unlock(i) :=
|
||||
Y <- ⊥
|
||||
return
|
Loading…
Add table
Add a link
Reference in a new issue