Nicht Konservativ ( / * ) | Konservativ ( | * ) |
|
---|---|---|
Nicht Strikt (* \ ) | / \ | | \ |
Strikt (* | ) | / | | | | |
Konsistenzstufe | Schreibsperre | Lesesperre |
---|---|---|
0 | kurz | - |
1 | lang | - |
2 | lang | kurz |
3 | lang | lang |
X | |
---|---|
X |
R | X | |
---|---|---|
R | ||
X |
R | U | X | |
---|---|---|---|
R | |||
U | |||
X |
Übergänge:
R | A | X | |
---|---|---|---|
R | |||
A | |||
X |
Übergänge:
Auf oberer Ebene (Tabelle):
R | X | IR | IX | RIX | |
---|---|---|---|---|---|
R | |||||
X | |||||
IR | |||||
IX | |||||
RIX |
Überprüfung auf unterer Ebene nötig |
---|
Auf unterer Ebene (Tupel): RX/RUX/RAX
R | A | C | |
---|---|---|---|
R | |||
A | |||
C |
Übergänge:
Verfahren | Kein Verhungern | Deadlockfrei selbes Obj. | Deadlockfrei anderes Obj. | Schedule | Bemerkung |
---|---|---|---|---|---|
RX | kaskadierte freies rücksetzen | Parallele Leser | |||
RUX | Parallele Leser | ||||
RAX | Zwar nach kein verklemmen, dafür verhungern für mehr Parallelität |
Können entweder
Ich → warte auf X
Jüngere TA hält Sperre | Ältere TA hält Sperre | |
---|---|---|
Wound-Wait | ⇒ ältere TA “verwundet” (Wound) jüngere TA; jüngere TA wird zurückgesetzt! | ⇒ jüngere TA “wartet” (Wait) |
Wait-Die | ⇒ ältere TA “wartet” (Wait) | ⇒ ältere TA “tötet” (Die) jüngere TA; jüngere TA wird zurückgesetzt! |
| Leser | älter als jüngster Schreiber | des Objekts ⇒ Leser zurücksetzen | $TS(T_i) < \text{writeTS}(O)$ |
Schreiber | älter als jüngster Schreiber oder Leser | des Objekts ⇒ Schreiber zurücksetzen | $TS(T_i) < \text{writeTS}(O) \vee TS(T_i) < \text{readTS}(O)$ |
Mein RS mit WS, beendeter TA (während meiner TA)
Bei Konflikt:
Mein RS mit WS, laufender TA
Bei Konflikt: