Table of Contents

Synchronisation

Pessimistische Synchronisation mit Sperren

Sperrprotokoll

Nicht
Konservativ (/ *)

Konservativ (| *)
Nicht Strikt (* \) / \ | \
Strikt (* |) / | | |

Konsistenzstufen

Konsistenzstufe Schreibsperre Lesesperre
0 kurz -
1 lang -
2 lang kurz
3 lang lang

Sperrverfahren

Verfahren

(Voll)
X
X (-)
RX
R X
R (+) (-)
X (-) (-)
RUX
R U X
R (+) (-) (-)
U (+) (-) (-)
X (-) (-) (-)

Übergänge:

RAX
R A X
R (+) (+) (-)
A (+) (-) (-)
X (-) (-) (-)

Übergänge:

RIX

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

RAC
R A C
R (+) (+) (+)
A (+) (-) (-)
C (+) (-) (-)

Übergänge:

Eigenschaften

Verfahren Kein Verhungern Deadlockfrei
selbes Obj.
Deadlockfrei
anderes Obj.
Schedule Bemerkung
RX (X) (X) (X) kaskadierte freies rücksetzen Parallele Leser
RUX (V) (V) (X) Parallele Leser
RAX (X) (V) (X) Zwar nach kein verklemmen, dafür verhungern für mehr Parallelität

Deadlocks

Können entweder

Wartegraph

Ich → warte auf X

Time-Out

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!

Pessimistische Synchronisation mit Zeitstempeln

| 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)$

Optimistische Synchronisation mit Zeitstempeln

BOCC

Mein RS mit WS, beendeter TA (während meiner TA)

Bei Konflikt:

BOCC+

FOCC

Mein RS mit WS, laufender TA

Bei Konflikt: