| 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: