vault backup: 2025-03-18 08:34:12

This commit is contained in:
Marco Realacci 2025-03-18 08:34:12 +01:00
parent 4b704e7176
commit 2048accc73
3 changed files with 36 additions and 16 deletions

View file

@ -33,6 +33,7 @@ Implementation: every transaction uses a local working space
#### A Logical Clock based STM system
All the READs perform if no inconsistencies arise, or before any inconsistency
(definizioni in def qua sotto)
>[!def]
>Let T be a transaction; its read prefix is formed by all its successful READ before its possible abortion.
@ -108,18 +109,21 @@ VWC allows more transactions to commit -> it is a more liberal property than opa
#### A Vector clock based STM system
We have m shared MRMW registers; register X is represented by a pair XX, with:
- XX.val the current value of X
- XX.depend[1...m] a vector clock s.t.
- XX.depend[X] is the sequence number associated with the current value of X
- XX.depend[Y] is the sequence number associated with the value of Y on which the current value of X depends from
- `XX.val` the current value of X
- `XX.depend[1...m]` a vector clock s.t.
- `XX.depend[X]` is the sequence number associated with the current value of X
- corresponds to the `date` of the previous algorithm
- `XX.depend[Y]` is the sequence number associated with the value of Y on which the current value of X depends from
- There is a starvation-free lock object associated to the pair
We have n processes; process $p_i$ has
- for every X, a local copy lc(XX) of the implementation of X
- $p\_depend_i[1…m]$ s.t. $p\_depend_i[X]$ is the seq.num. of the last val of X (directly or undirectly) known by $p_i$
So for X, I don't just have to track "who modified X", but also "who modified "Y or Z", if they may have influenced X.
Every transaction T issues by pi has:
- read_set(T) and write_set(T)
We have n processes; process $p_i$ has
- for every X, a local copy `lc(XX)` of the implementation of X
- $p\_depend_i[1…m]$ s.t. $p\_depend_i[X]$ is the sequence number of the last val of X (directly or indirectly) known by $p_i$
Every transaction T issues by $p_i$ has:
- `read_set(T)` and `write_set(T)`
- $t\_depend_{T}[1…m]$ a local copy of $p\_depend_i$ (this is used in the optimistic execution, not to change $p\_depend_{i}$ if T aborts)
```