vault backup: 2025-03-24 08:59:23

This commit is contained in:
Marco Realacci 2025-03-24 08:59:23 +01:00
parent e8a07c2570
commit 2db08c4e95

View file

@ -6,5 +6,14 @@ Critical sections (locks) have drawbacks:
the liveness properties used so far cannot be used anymore, since they rely on CSs.
(example: if we have only atomic R/W registers, these are the only atomic things that we have. But we may also have atomic primitives like *test&set*, *compare&swap* ecc.).
1. **Obstruction freedom:**
#### Liveness properties
We have four new liveness properties
1. **Obstruction freedom:** every time an operation is run in isolation (no overlap with any other operation on the same object), it terminates
2. **Non-blocking:** whenever an operation is invoked on an object, eventually one operation on that object terminates
- reminds deadlock-freedom in MUTEX-based concurrency
3. **Wait freedom:** whenever an operation is invoked on an object, it eventually terminates
- reminds starvation-freedom in MUTEX-based concurrency
4. **Bounded wait freedom:** W.F. plus a bound on the number of steps needed to terminate
- reminds bounded bypass in MUTEX-based concurrency
*REMARK:* these notions naturally cope with (crash) failures. Fail stop is another way of terminating, there is no way of distinguishing a failure from an arbitrary long sleep (because of asynchrony).