• Keine Ergebnisse gefunden

DasMutual-Exclusion-Problembei n Prozessen Prinzipien,Modelle&AlgorithmenderNebenl¨aufigenProgrammierung

N/A
N/A
Protected

Academic year: 2021

Aktie "DasMutual-Exclusion-Problembei n Prozessen Prinzipien,Modelle&AlgorithmenderNebenl¨aufigenProgrammierung"

Copied!
83
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Prinzipien, Modelle & Algorithmen der Nebenl¨aufigen Programmierung Wintersemester 2020/21

Das Mutual-Exclusion-Problem bei n Prozessen

Prof. Dr. David Sabel

LFE Theoretische Informatik

Letzte ¨Anderung der Folien: 30. Dezember 2020

(2)

Ubersicht: Algorithmen f¨ ¨ ur n Prozesse

1 Tournament-Algorithmen

2 Lamports Algorithmus

3 Bakery-Algorithmus

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 2/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(3)

Mutual-Exclusion f¨ ur n Prozesse

Gesucht: Algorithmen die f¨ ur n Prozesse funktionieren.

Annahme: n ist bekannt und bleibt konstant.

Einfache Idee:

Benutze die Algorithmen f¨ ur 2 Prozesse “Baum-artig”

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 3/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(4)

Idee des Tournament-Algorithmus (basierend auf Peterson-Alg.)

Kritischer Abschnitt

turn=d.c.

wantl=×| wantr=×|

Level 3

Level 2

wantl=×turn=d.c.| wantr=×|

turn=d.c.

wantl=×|| wantr=×

Level 1

wantl=×|turn=d.c.| wantr=×

turn=d.c.

wantl=×| wantr=×|

turn=d.c.

wantl=×|| wantr=×

turn=d.c.

wantl=×| wantr=×|

Prozess 1 2 3 4 5 6 7 8

turn: 2 = linkes Kind darf durch, 1 = rechtes Kind darf durch wantl =wantdes linken Kindes, wantr =wantdes rechten Kindes

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 4/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(5)

Idee des Tournament-Algorithmus (basierend auf Peterson-Alg.)

Kritischer Abschnitt

turn=d.c.

wantl=×| wantr=×|

Level 3

Level 2

wantl=×turn=d.c.| wantr=×|

turn=d.c.

wantl=×|| wantr=×

Level 1

wantl=×|turn=d.c.| wantr=×

turn=d.c.

wantl=×| wantr=×|

turn=d.c.

wantl=×|| wantr=×

turn=d.c.

wantl=×| wantr=×|

Prozess 1 2 3 4 5 6 7 8

turn: 2 = linkes Kind darf durch, 1 = rechtes Kind darf durch wantl =wantdes linken Kindes, wantr =wantdes rechten Kindes

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 4/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(6)

Idee des Tournament-Algorithmus (basierend auf Peterson-Alg.)

Kritischer Abschnitt

turn=d.c.

wantl=×| wantr=×|

Level 3

Level 2

wantl=×turn=d.c.| wantr=×|

turn=d.c.

wantl=×|| wantr=×

Level 1

wantl=×|turn=2| wantr=X

turn=d.c.

wantl=×| wantr=×|

turn=d.c.

wantl=×|| wantr=×

turn=d.c.

wantl=×| wantr=×|

Prozess 1 2 3 4 5 6 7 8

turn: 2 = linkes Kind darf durch, 1 = rechtes Kind darf durch wantl =wantdes linken Kindes, wantr =wantdes rechten Kindes

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 4/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(7)

Idee des Tournament-Algorithmus (basierend auf Peterson-Alg.)

Kritischer Abschnitt

turn=d.c.

wantl=×| wantr=×|

Level 3

Level 2

wantl=Xturn=1| wantr=×|

turn=d.c.

wantl=×|| wantr=×

Level 1

wantl=×|turn=2| wantr=X

turn=d.c.

wantl=×| wantr=×|

turn=d.c.

wantl=×|| wantr=×

turn=d.c.

wantl=×| wantr=×|

Prozess 1 2 3 4 5 6 7 8

turn: 2 = linkes Kind darf durch, 1 = rechtes Kind darf durch wantl =wantdes linken Kindes, wantr =wantdes rechten Kindes

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 4/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(8)

Idee des Tournament-Algorithmus (basierend auf Peterson-Alg.)

Kritischer Abschnitt

turn=d.c.

wantl=×| wantr=×|

Level 3

Level 2

wantl=Xturn=1| wantr=×|

turn=d.c.

wantl=×|| wantr=×

Level 1

wantl=×|turn=2| wantr=X

turn=d.c.

wantl=×| wantr=×|

turn=d.c.

wantl=×|| wantr=×

turn=d.c.

wantl=×| wantr=×|

Prozess 1 2 3 4 5 6 7 8

turn: 2 = linkes Kind darf durch, 1 = rechtes Kind darf durch wantl =wantdes linken Kindes, wantr =wantdes rechten Kindes

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 4/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(9)

Idee des Tournament-Algorithmus (basierend auf Peterson-Alg.)

Kritischer Abschnitt

turn=d.c.

wantl=×| wantr=×|

Level 3

Level 2

wantl=Xturn=1| wantr=×|

turn=d.c.

wantl=×|| wantr=×

Level 1

wantl=×|turn=2| wantr=X

turn=1 wantl=X| wantr=×|

turn=d.c.

wantl=×|| wantr=×

turn=d.c.

wantl=×| wantr=×|

Prozess 1 2 3 4 5 6 7 8

turn: 2 = linkes Kind darf durch, 1 = rechtes Kind darf durch wantl =wantdes linken Kindes, wantr =wantdes rechten Kindes

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 4/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(10)

Idee des Tournament-Algorithmus (basierend auf Peterson-Alg.)

Kritischer Abschnitt

turn=d.c.

wantl=×| wantr=×|

Level 3

Level 2

wantl=X|turn=2| wantr=X

turn=d.c.

wantl=×|| wantr=×

Level 1

wantl=×|turn=2| wantr=X

turn=1 wantl=X| wantr=×|

turn=d.c.

wantl=×|| wantr=×

turn=d.c.

wantl=×| wantr=×|

Prozess 1 2 3 4 5 6 7 8

turn: 2 = linkes Kind darf durch, 1 = rechtes Kind darf durch wantl =wantdes linken Kindes, wantr =wantdes rechten Kindes

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 4/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(11)

Idee des Tournament-Algorithmus (basierend auf Peterson-Alg.)

Kritischer Abschnitt

turn=1 wantl=X| wantr=×|

Level 3

Level 2

wantl=X|turn=2| wantr=X

turn=d.c.

wantl=×|| wantr=×

Level 1

wantl=×|turn=2| wantr=X

turn=1 wantl=X| wantr=×|

turn=d.c.

wantl=×|| wantr=×

turn=d.c.

wantl=×| wantr=×|

Prozess 1 2 3 4 5 6 7 8

turn: 2 = linkes Kind darf durch, 1 = rechtes Kind darf durch wantl =wantdes linken Kindes, wantr =wantdes rechten Kindes

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 4/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(12)

Idee des Tournament-Algorithmus (basierend auf Peterson-Alg.) Kritischer Abschnitt P2 im Kritischen Abschnitt

turn=1 wantl=X| wantr=×|

Level 3

Level 2

wantl=X|turn=2| wantr=X

turn=d.c.

wantl=×|| wantr=×

Level 1

wantl=×|turn=2| wantr=X

turn=1 wantl=X| wantr=×|

turn=d.c.

wantl=×|| wantr=×

turn=d.c.

wantl=×| wantr=×|

Prozess 1 2 3 4 5 6 7 8

turn: 2 = linkes Kind darf durch, 1 = rechtes Kind darf durch wantl =wantdes linken Kindes, wantr =wantdes rechten Kindes

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 4/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(13)

Idee des Tournament-Algorithmus (basierend auf Peterson-Alg.)

Kritischer Abschnitt

turn=1 wantl=×| wantr=×|

Level 3

Level 2

wantl=X|turn=2| wantr=X

turn=d.c.

wantl=×|| wantr=×

Level 1

wantl=×|turn=2| wantr=X

turn=1 wantl=X| wantr=×|

turn=d.c.

wantl=×|| wantr=×

turn=d.c.

wantl=×| wantr=×|

Prozess 1 2 3 4 5 6 7 8

turn: 2 = linkes Kind darf durch, 1 = rechtes Kind darf durch wantl =wantdes linken Kindes, wantr =wantdes rechten Kindes

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 4/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(14)

Idee des Tournament-Algorithmus (basierend auf Peterson-Alg.)

Kritischer Abschnitt

turn=1 wantl=×| wantr=×|

Level 3

Level 2

wantl=×turn=2| wantr=X|

turn=d.c.

wantl=×|| wantr=×

Level 1

wantl=×|turn=2| wantr=X

turn=1 wantl=X| wantr=×|

turn=d.c.

wantl=×|| wantr=×

turn=d.c.

wantl=×| wantr=×|

Prozess 1 2 3 4 5 6 7 8

turn: 2 = linkes Kind darf durch, 1 = rechtes Kind darf durch wantl =wantdes linken Kindes, wantr =wantdes rechten Kindes

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 4/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(15)

Idee des Tournament-Algorithmus (basierend auf Peterson-Alg.)

Kritischer Abschnitt

turn=1 wantl=×| wantr=×|

Level 3

Level 2

wantl=×turn=2| wantr=X|

turn=d.c.

wantl=×|| wantr=×

Level 1

wantl=×|turn=2| wantr=×

turn=1 wantl=X| wantr=×|

turn=d.c.

wantl=×|| wantr=×

turn=d.c.

wantl=×| wantr=×|

Prozess 1 2 3 4 5 6 7 8

turn: 2 = linkes Kind darf durch, 1 = rechtes Kind darf durch wantl =wantdes linken Kindes, wantr =wantdes rechten Kindes

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 4/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(16)

Idee des Tournament-Algorithmus (basierend auf Peterson-Alg.)

Kritischer Abschnitt

turn=1 wantl=×| wantr=×|

Level 3

Level 2

wantl=×turn=2| wantr=X|

turn=d.c.

wantl=×|| wantr=×

Level 1

wantl=×|turn=2| wantr=×

turn=1 wantl=X| wantr=×|

turn=d.c.

wantl=×|| wantr=×

turn=d.c.

wantl=×| wantr=×|

Prozess 1 2 3 4 5 6 7 8

turn: 2 = linkes Kind darf durch, 1 = rechtes Kind darf durch wantl =wantdes linken Kindes, wantr =wantdes rechten Kindes

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 4/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(17)

Eigenschaften der Tournament-Algorithmen

Einfach zu implementieren

Wechselseitiger Ausschluss, Deadlock-Freiheit und Starvation-Freiheit, wenn Algorithmus f¨ ur 2 Prozesse diese Eigenschaften hat.

Nachteil: dlog

2

ne-maliges Ausf¨ uhren des Initialisierungs- und Ausgangscodes Auch dann, wenn nur ein einzelner Prozess in den kritischen Abschnitt will!

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 5/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(18)

Lamports Algorithmus

Leslie Lamport (US-amerikanischer Informatiker, Turing Award 2013) Algorithmus ver¨ offentlicht 1987

Schneller Algorithmus f¨ ur N Prozesse

schnell = Wenn nur ein Prozess in den kritischen Abschnitt will, dann nur konstante Laufzeit

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 6/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(19)

Lamports Algorithmus: Programm des i. Prozesses

Initial:y=0, f¨uri= 1, . . . , n:want[i]=False, Wert vonxegal loop forever

(1) restlicher Code (2) want[i] := True;

(3) x:=i;

(4) ify6= 0then (5) want[i] := False;

(6) awaity= 0;

(7) goto(2);

(8) y:=i;

(9) ifx6=ithen (10) want[i] := False;

(11) forj:=1tondo await¬want[j];

(12) ify6=ithen

(13) awaity= 0;

(14) goto(2);

(15) Kritischer Abschnitt (16) y:= 0;

(17) want[i] := False;

end loop

(2), (3) setze want[i]=True undx=i

(4)y6=0? schon ein anderer Prozess

zwischen (9)-(15)?

(5)-(7) gib Versuch auf, warte auf y=0, dann Neustart

(8) setzey=i

(9)x6=i? noch ein anderer Prozess

(nach mir) durch (3)?

(10),(11) Warte, dass keiner mehry

setzen kann

(15) Kritischer Abschnitt

(12) War ich der letzte dery

gesetzt hat?

(13), (14) Warte, dass

kritischer Abschnitt verlassen wird, dann Neustart (16),(17) setze y=0, want[i]=False

Nein Ja

Nein Ja

Ja

Nein

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 7/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(20)

Lamports Algorithmus: Programm des i. Prozesses

Initial:y=0, f¨uri= 1, . . . , n:want[i]=False, Wert vonxegal loop forever

(1) restlicher Code (2) want[i] := True;

(3) x:=i;

(4) ify6= 0then (5) want[i] := False;

(6) awaity= 0;

(7) goto(2);

(8) y:=i;

(9) ifx6=ithen (10) want[i] := False;

(11) forj:=1tondo await¬want[j];

(12) ify6=ithen

(13) awaity= 0;

(14) goto(2);

(15) Kritischer Abschnitt (16) y:= 0;

(17) want[i] := False;

end loop

(2), (3) setze want[i]=True undx=i

(4)y6=0?

schon ein anderer Prozess

zwischen (9)-(15)?

(5)-(7) gib Versuch auf, warte auf y=0, dann Neustart

(8) setzey=i

(9)x6=i?

noch ein anderer Prozess

(nach mir) durch (3)?

(10),(11) Warte, dass keiner mehry

setzen kann

(15) Kritischer Abschnitt

(12) War ich der letzte dery

gesetzt hat?

(13), (14) Warte, dass

kritischer Abschnitt verlassen wird, dann Neustart (16),(17) setze y=0, want[i]=False

Nein Ja

Nein Ja

Ja

Nein

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 7/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(21)

Lamports Algorithmus: Programm des i. Prozesses

Initial:y=0, f¨uri= 1, . . . , n:want[i]=False, Wert vonxegal loop forever

(1) restlicher Code (2) want[i] := True;

(3) x:=i;

(4) ify6= 0then (5) want[i] := False;

(6) awaity= 0;

(7) goto(2);

(8) y:=i;

(9) ifx6=ithen (10) want[i] := False;

(11) forj:=1tondo await¬want[j];

(12) ify6=ithen

(13) awaity= 0;

(14) goto(2);

(15) Kritischer Abschnitt (16) y:= 0;

(17) want[i] := False;

end loop

(2), (3) setze want[i]=True undx=i

(4)y6=0?

schon ein anderer Prozess

zwischen (9)-(15)?

(5)-(7) gib Versuch auf, warte auf y=0, dann Neustart

(8) setzey=i

(9)x6=i?

noch ein anderer Prozess

(nach mir) durch (3)?

(10),(11) Warte, dass keiner mehry

setzen kann

(15) Kritischer Abschnitt

(12) War ich der letzte dery

gesetzt hat?

(13), (14) Warte, dass

kritischer Abschnitt verlassen wird, dann Neustart (16),(17) setze y=0, want[i]=False

Nein Ja

Nein Ja

Ja

Nein

α β

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 7/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

Zwei M¨ oglichkeiten, den

Kritischen Abschnitt zu

erreichen!

(22)

Lamports Algorithmus: Einfache Eigenschaften

Satz

F¨ ur Lamports Algorithmus gilt:

Wenn ein einzelner Prozess in den Kritischen Abschnitt m¨ ochte, dann f¨ uhrt er nur konstant viele Operationen durch.

Lamports Algorithmus ist nicht Starvation frei.

Beweis: Folgt direkt aus dem Algorithmus / Flussdiagramm.

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 8/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(23)

Lamports Algorithmus garantiert Mutual-Exclusion (1)

Satz

Lamports Algorithmus garantiert wechselseitigen Ausschluss.

Beweis durch Widerspruch:

Annahme: Prozess i und Prozess j sind gleichzeitig im kritischen Abschnitt, wobei i zuerst im kritischen Abschnitt war.

Fallunterscheidung:

Prozess i erreicht den kritischen Abschnitt entlang Pfad α.

Prozess i erreicht den kritischen Abschnitt entlang Pfad β.

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 9/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(24)

Lamports Algorithmus garantiert Mutual-Exclusion (2)

Fall 1: 2 Prozesse betreten den kritischen Abschnitt, erster entlang α:

i: erster Prozess (entlangα)

j: zweiter Prozess (entlangαoderβ)

Wennidurch (9) l¨auft gilt:

x=iundy6= 0.

Impliziert:

(1)jnoch nicht durch (3), oder (2)jdurch (3) bevoridurch (3) Fall (1): Dajvor (4):

–jwird in (5)-(7) geschickt – und wartet bisy= 0, D.h.jkann nicht mehr in KA Fall (2): Wennjdurch (9), giltx6=j. D.h. kein Eingang entlangα.

Entlangβ: an derfor-Schleife wirdjwarten bis want[i]=False gilt (geht erst nachdemiKA verl¨asst)

(2), (3) setze want[i]=True undx=i

(4)y6=0?

schon ein anderer Prozess

zwischen (9)-(15)?

(5)-(7) gib Versuch auf, warte auf y=0,

dann Neustart

(8) setzey=i

(9)x6=i?

noch ein anderer Prozess

(nach mir) durch (3)?

(10),(11) Warte, dass keiner mehry

setzen kann

(15) Kritischer Abschnitt

(12) War ich der letzte dery

gesetzt hat?

(13), (14) Warte, dass

kritischer Abschnitt verlassen wird, dann Neustart (16),(17) setze y=0, want[i]=False

Nein Ja

Nein Ja

Ja

Nein

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 10/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(25)

Lamports Algorithmus garantiert Mutual-Exclusion (2)

Fall 1: 2 Prozesse betreten den kritischen Abschnitt, erster entlang α:

i: erster Prozess (entlangα)

j: zweiter Prozess (entlangαoderβ) Wennidurch (9) l¨auft gilt:

x=iundy6= 0.

Impliziert:

(1)jnoch nicht durch (3), oder (2)jdurch (3) bevoridurch (3) Fall (1): Dajvor (4):

–jwird in (5)-(7) geschickt – und wartet bisy= 0, D.h.jkann nicht mehr in KA Fall (2): Wennjdurch (9), giltx6=j. D.h. kein Eingang entlangα.

Entlangβ: an derfor-Schleife wirdjwarten bis want[i]=False gilt (geht erst nachdemiKA verl¨asst)

(2), (3) setze want[i]=True undx=i

(4)y6=0?

schon ein anderer Prozess

zwischen (9)-(15)?

(5)-(7) gib Versuch auf, warte auf y=0,

dann Neustart

(8) setzey=i

(9)x6=i?

noch ein anderer Prozess

(nach mir) durch (3)?

(10),(11) Warte, dass keiner mehry

setzen kann

(15) Kritischer Abschnitt

(12) War ich der letzte dery

gesetzt hat?

(13), (14) Warte, dass

kritischer Abschnitt verlassen wird, dann Neustart (16),(17) setze y=0, want[i]=False

Nein Ja

Nein Ja

Ja

Nein

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 10/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(26)

Lamports Algorithmus garantiert Mutual-Exclusion (2)

Fall 1: 2 Prozesse betreten den kritischen Abschnitt, erster entlang α:

i: erster Prozess (entlangα)

j: zweiter Prozess (entlangαoderβ) Wennidurch (9) l¨auft gilt:

x=iundy6= 0.

Impliziert:

(1)jnoch nicht durch (3), oder (2)jdurch (3) bevoridurch (3)

Fall (1): Dajvor (4): –jwird in (5)-(7) geschickt – und wartet bisy= 0, D.h.jkann nicht mehr in KA Fall (2): Wennjdurch (9), giltx6=j. D.h. kein Eingang entlangα.

Entlangβ: an derfor-Schleife wirdjwarten bis want[i]=False gilt (geht erst nachdemiKA verl¨asst)

(2), (3) setze want[i]=True undx=i

(4)y6=0?

schon ein anderer Prozess

zwischen (9)-(15)?

(5)-(7) gib Versuch auf, warte auf y=0,

dann Neustart

(8) setzey=i

(9)x6=i?

noch ein anderer Prozess

(nach mir) durch (3)?

(10),(11) Warte, dass keiner mehry

setzen kann

(15) Kritischer Abschnitt

(12) War ich der letzte dery

gesetzt hat?

(13), (14) Warte, dass

kritischer Abschnitt verlassen wird, dann Neustart (16),(17) setze y=0, want[i]=False

Nein Ja

Nein Ja

Ja

Nein

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 10/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(27)

Lamports Algorithmus garantiert Mutual-Exclusion (2)

Fall 1: 2 Prozesse betreten den kritischen Abschnitt, erster entlang α:

i: erster Prozess (entlangα)

j: zweiter Prozess (entlangαoderβ) Wennidurch (9) l¨auft gilt:

x=iundy6= 0.

Impliziert:

(1)jnoch nicht durch (3), oder (2)jdurch (3) bevoridurch (3) Fall (1): Dajvor (4):

–jwird in (5)-(7) geschickt – und wartet bisy= 0, D.h.jkann nicht mehr in KA

Fall (2): Wennjdurch (9), giltx6=j. D.h. kein Eingang entlangα.

Entlangβ: an derfor-Schleife wirdjwarten bis want[i]=False gilt (geht erst nachdemiKA verl¨asst)

(2), (3) setze want[i]=True undx=i

(4)y6=0?

schon ein anderer Prozess

zwischen (9)-(15)?

(5)-(7) gib Versuch auf, warte auf y=0,

dann Neustart

(8) setzey=i

(9)x6=i?

noch ein anderer Prozess

(nach mir) durch (3)?

(10),(11) Warte, dass keiner mehry

setzen kann

(15) Kritischer Abschnitt

(12) War ich der letzte dery

gesetzt hat?

(13), (14) Warte, dass

kritischer Abschnitt verlassen wird, dann Neustart (16),(17) setze y=0, want[i]=False

Nein Ja

Nein Ja

Ja

Nein

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 10/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(28)

Lamports Algorithmus garantiert Mutual-Exclusion (2)

Fall 1: 2 Prozesse betreten den kritischen Abschnitt, erster entlang α:

i: erster Prozess (entlangα)

j: zweiter Prozess (entlangαoderβ) Wennidurch (9) l¨auft gilt:

x=iundy6= 0.

Impliziert:

(1)jnoch nicht durch (3), oder (2)jdurch (3) bevoridurch (3) Fall (1): Dajvor (4):

–jwird in (5)-(7) geschickt – und wartet bisy= 0, D.h.jkann nicht mehr in KA Fall (2): Wennjdurch (9), giltx6=j.

D.h. kein Eingang entlangα.

Entlangβ: an derfor-Schleife wirdjwarten bis want[i]=False gilt (geht erst nachdemiKA verl¨asst)

(2), (3) setze want[i]=True undx=i

(4)y6=0?

schon ein anderer Prozess

zwischen (9)-(15)?

(5)-(7) gib Versuch auf, warte auf y=0,

dann Neustart

(8) setzey=i

(9)x6=i?

noch ein anderer Prozess

(nach mir) durch (3)?

(10),(11) Warte, dass keiner mehry

setzen kann

(15) Kritischer Abschnitt

(12) War ich der letzte dery

gesetzt hat?

(13), (14) Warte, dass

kritischer Abschnitt verlassen wird, dann Neustart (16),(17) setze y=0, want[i]=False

Nein Ja

Nein Ja

Ja

Nein

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 10/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(29)

Lamports Algorithmus garantiert Mutual-Exclusion (2)

Fall 1: 2 Prozesse betreten den kritischen Abschnitt, erster entlang α:

i: erster Prozess (entlangα)

j: zweiter Prozess (entlangαoderβ) Wennidurch (9) l¨auft gilt:

x=iundy6= 0.

Impliziert:

(1)jnoch nicht durch (3), oder (2)jdurch (3) bevoridurch (3) Fall (1): Dajvor (4):

–jwird in (5)-(7) geschickt – und wartet bisy= 0, D.h.jkann nicht mehr in KA Fall (2): Wennjdurch (9), giltx6=j.

D.h. kein Eingang entlangα.

Entlangβ: an derfor-Schleife wirdjwarten bis want[i]=False gilt (geht erst nachdemiKA verl¨asst)

(2), (3) setze want[i]=True undx=i

(4)y6=0?

schon ein anderer Prozess

zwischen (9)-(15)?

(5)-(7) gib Versuch auf, warte auf y=0,

dann Neustart

(8) setzey=i

(9)x6=i?

noch ein anderer Prozess

(nach mir) durch (3)?

(10),(11) Warte, dass keiner mehry

setzen kann

(15) Kritischer Abschnitt

(12) War ich der letzte dery

gesetzt hat?

(13), (14) Warte, dass

kritischer Abschnitt verlassen wird, dann Neustart (16),(17) setze y=0, want[i]=False

Nein Ja

Nein Ja

Ja

Nein

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 10/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

Unm¨ oglich!

(30)

Lamports Algorithmus garantiert Mutual-Exclusion (3)

Fall 2: 2 Prozesse betreten den kritischen Abschnitt, erster entlang β:

i: erster Prozess (entlangβ)

j: zweiter Prozess (entlangαoderβ)

Wennidie for-Schleife durchlaufen hat:

ykann erst ver¨andert werden nachdemiKA verl¨asst:

ihatte darauf gewartet, dass alle want-Eintr¨age falsch sind: Jeder andere Prozess liest entwedery6= 0in (4) und bleibt am await in (6) h¨angen, oder (wenn er y=0 gelesen hatte) setzt er seinen want-Eintrag erst auf False, nachdemerybeschrieben hat.

Deshalb: jkannynicht ver¨andern, undy=igilt, bisiKA verl¨asst

D.h.jnicht entlangβ.

jnicht entlangα: Day=iundykann nicht ge¨andert werden: Alle andere Prozesse werden bei Zeile (4) zum Warten gelenkt.

(2), (3) setze want[i]=True undx=i

(4)y6=0?

schon ein anderer Prozess

zwischen (9)-(15)?

(5)-(7) gib Versuch auf, warte auf y=0,

dann Neustart

(8) setzey=i

(9)x6=i?

noch ein anderer Prozess

(nach mir) durch (3)?

(10),(11) Warte, dass keiner mehry

setzen kann

(15) Kritischer Abschnitt

(12) War ich der letzte dery

gesetzt hat?

(13), (14) Warte, dass

kritischer Abschnitt verlassen wird, dann Neustart (16),(17) setze y=0, want[i]=False

Nein Ja

Nein Ja

Ja

Nein

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 11/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(31)

Lamports Algorithmus garantiert Mutual-Exclusion (3)

Fall 2: 2 Prozesse betreten den kritischen Abschnitt, erster entlang β:

i: erster Prozess (entlangβ)

j: zweiter Prozess (entlangαoderβ) Wennidie for-Schleife durchlaufen hat:

ykann erst ver¨andert werden nachdemiKA verl¨asst:

ihatte darauf gewartet, dass alle want-Eintr¨age falsch sind: Jeder andere Prozess liest entwedery6= 0in (4) und bleibt am await in (6) h¨angen, oder (wenn er y=0 gelesen hatte) setzt er seinen want-Eintrag erst auf False, nachdemerybeschrieben hat.

Deshalb: jkannynicht ver¨andern, undy=igilt, bisiKA verl¨asst

D.h.jnicht entlangβ.

jnicht entlangα: Day=iundykann nicht ge¨andert werden: Alle andere Prozesse werden bei Zeile (4) zum Warten gelenkt.

(2), (3) setze want[i]=True undx=i

(4)y6=0?

schon ein anderer Prozess

zwischen (9)-(15)?

(5)-(7) gib Versuch auf, warte auf y=0,

dann Neustart

(8) setzey=i

(9)x6=i?

noch ein anderer Prozess

(nach mir) durch (3)?

(10),(11) Warte, dass keiner mehry

setzen kann

(15) Kritischer Abschnitt

(12) War ich der letzte dery

gesetzt hat?

(13), (14) Warte, dass

kritischer Abschnitt verlassen wird, dann Neustart (16),(17) setze y=0, want[i]=False

Nein Ja

Nein Ja

Ja

Nein

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 11/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(32)

Lamports Algorithmus garantiert Mutual-Exclusion (3)

Fall 2: 2 Prozesse betreten den kritischen Abschnitt, erster entlang β:

i: erster Prozess (entlangβ)

j: zweiter Prozess (entlangαoderβ) Wennidie for-Schleife durchlaufen hat:

ykann erst ver¨andert werden nachdemiKA verl¨asst:

ihatte darauf gewartet, dass alle want-Eintr¨age falsch sind: Jeder andere Prozess liest entwedery6= 0in (4) und bleibt am await in (6) h¨angen, oder (wenn er y=0 gelesen hatte) setzt er seinen want-Eintrag erst auf False, nachdemerybeschrieben hat.

Deshalb:j kannynicht ver¨andern, undy=igilt, bisiKA verl¨asst

D.h.jnicht entlangβ.

jnicht entlangα: Day=iundykann nicht ge¨andert werden: Alle andere Prozesse werden bei Zeile (4) zum Warten gelenkt.

(2), (3) setze want[i]=True undx=i

(4)y6=0?

schon ein anderer Prozess

zwischen (9)-(15)?

(5)-(7) gib Versuch auf, warte auf y=0,

dann Neustart

(8) setzey=i

(9)x6=i?

noch ein anderer Prozess

(nach mir) durch (3)?

(10),(11) Warte, dass keiner mehry

setzen kann

(15) Kritischer Abschnitt

(12) War ich der letzte dery

gesetzt hat?

(13), (14) Warte, dass

kritischer Abschnitt verlassen wird, dann Neustart (16),(17) setze y=0, want[i]=False

Nein Ja

Nein Ja

Ja

Nein

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 11/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(33)

Lamports Algorithmus garantiert Mutual-Exclusion (3)

Fall 2: 2 Prozesse betreten den kritischen Abschnitt, erster entlang β:

i: erster Prozess (entlangβ)

j: zweiter Prozess (entlangαoderβ) Wennidie for-Schleife durchlaufen hat:

ykann erst ver¨andert werden nachdemiKA verl¨asst:

ihatte darauf gewartet, dass alle want-Eintr¨age falsch sind: Jeder andere Prozess liest entwedery6= 0in (4) und bleibt am await in (6) h¨angen, oder (wenn er y=0 gelesen hatte) setzt er seinen want-Eintrag erst auf False, nachdemerybeschrieben hat.

Deshalb:j kannynicht ver¨andern, undy=igilt, bisiKA verl¨asst

D.h.jnicht entlangβ.

jnicht entlangα: Day=iundykann nicht ge¨andert werden: Alle andere Prozesse werden bei Zeile (4) zum Warten gelenkt.

(2), (3) setze want[i]=True undx=i

(4)y6=0?

schon ein anderer Prozess

zwischen (9)-(15)?

(5)-(7) gib Versuch auf, warte auf y=0,

dann Neustart

(8) setzey=i

(9)x6=i?

noch ein anderer Prozess

(nach mir) durch (3)?

(10),(11) Warte, dass keiner mehry

setzen kann

(15) Kritischer Abschnitt

(12) War ich der letzte dery

gesetzt hat?

(13), (14) Warte, dass

kritischer Abschnitt verlassen wird, dann Neustart (16),(17) setze y=0, want[i]=False

Nein Ja

Nein Ja

Ja

Nein

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 11/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(34)

Lamports Algorithmus garantiert Mutual-Exclusion (3)

Fall 2: 2 Prozesse betreten den kritischen Abschnitt, erster entlang β:

i: erster Prozess (entlangβ)

j: zweiter Prozess (entlangαoderβ) Wennidie for-Schleife durchlaufen hat:

ykann erst ver¨andert werden nachdemiKA verl¨asst:

ihatte darauf gewartet, dass alle want-Eintr¨age falsch sind: Jeder andere Prozess liest entwedery6= 0in (4) und bleibt am await in (6) h¨angen, oder (wenn er y=0 gelesen hatte) setzt er seinen want-Eintrag erst auf False, nachdemerybeschrieben hat.

Deshalb:j kannynicht ver¨andern, undy=igilt, bisiKA verl¨asst

D.h.jnicht entlangβ.

jnicht entlangα: Day=iundykann nicht ge¨andert werden: Alle andere Prozesse werden bei Zeile (4) zum Warten gelenkt.

(2), (3) setze want[i]=True undx=i

(4)y6=0?

schon ein anderer Prozess

zwischen (9)-(15)?

(5)-(7) gib Versuch auf, warte auf y=0,

dann Neustart

(8) setzey=i

(9)x6=i?

noch ein anderer Prozess

(nach mir) durch (3)?

(10),(11) Warte, dass keiner mehry

setzen kann

(15) Kritischer Abschnitt

(12) War ich der letzte dery

gesetzt hat?

(13), (14) Warte, dass

kritischer Abschnitt verlassen wird, dann Neustart (16),(17) setze y=0, want[i]=False

Nein Ja

Nein Ja

Ja

Nein

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 11/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

Unm¨ oglich!

(35)

Lamports Algorithmus ist Deadlock-frei (1)

Satz

Lamports Algorithmus ist Deadlock-frei.

Beweis: N¨ achste Folien.

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 12/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(36)

Lamports Algorithmus ist Deadlock-frei (2)

loop forever (1) restlicher Code (2) want[i] := True;

(3) x:=i;

(4) ify6= 0then (5) want[i] := False;

(6) awaity= 0;

(7) goto(2);

(8) y:=i;

(9) ifx6=ithen (10) want[i] := False;

(11) forj:=1tondo await¬want[j];

(12) ify6=ithen

(13) awaity= 0;

(14) goto(2);

(15) Kritischer Abschnitt (16) y:= 0;

(17) want[i] := False;

end loop

SeiP = (i1, j1),(i2, j2), . . .eine Berechnungsequenz, wobei ik: Nummer des Prozesses, der einen Schritt macht jk: Programmzeile, die Prozessik ausf¨uhrt

Zu jedem(ik, jk)gibt es einen festen Zustand (Variablenbelegung + Codezeiger der Prozesse)

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 13/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(37)

Lamports Algorithmus ist Deadlock-frei (3)

loop forever (1) restlicher Code (2) want[i] := True;

(3) x:=i;

(4) ify6= 0then (5) want[i] := False;

(6) awaity= 0;

(7) goto(2);

(8) y:=i;

(9) ifx6=ithen (10) want[i] := False;

(11) forj:=1tondo await¬want[j];

(12) ify6=ithen

(13) awaity= 0;

(14) goto(2);

(15) Kritischer Abschnitt (16) y:= 0;

(17) want[i] := False;

end loop

Nehme an:P widerlegt die Deadlock-Freiheit

D.h. es gibt einen Schritt nach dem kein Prozess mehr den kritischen Abschnitt erreicht: ⇒Es gibtk sodass f¨ur alle k0≥k:jk0 6= 15.

Aber mindestens einer will in den kritischen Abschnitt (ist im Initialisierungscode):

⇒Es gibtl≥k0 so dassjl∈ {2, . . . ,14}

Nach weiteren Schritten kann kein anderer Prozess mehr im Abschlusscode sein:

⇒Es gibtk2≥l, so dass f¨ur allek20 ≥kgilt:

jk0

2 ∈ {1−14}

Nach weiteren Schritten muss irgendein Prozessy setzen und danach kann keiner y auf 0 setzen:

⇒Es gibtk3≥k2, so dassy6= 0f¨ur alle Zust¨ande abk3

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 14/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(38)

Lamports Algorithmus ist Deadlock-frei (4)

loop forever (1) restlicher Code (2) want[i] := True;

(3) x:=i;

(4) ify6= 0then (5) want[i] := False;

(6) awaity= 0;

(7) goto(2);

(8) y:=i;

(9) ifx6=ithen (10) want[i] := False;

(11) forj:=1tondo await¬want[j];

(12) ify6=ithen

(13) awaity= 0;

(14) goto(2);

(15) Kritischer Abschnitt (16) y:= 0;

(17) want[i] := False;

end loop

F¨ur alle Schritte nachk3 gilt:

Wenn Prozessinicht Zeile 8 als n¨achstes ausf¨uhren will, dann wird Prozessinie Zeile8ausf¨uhren.

(Day6= 0wird er am await h¨angen bleiben).

Nachdem alle Prozesse, die noch Zeile8ausf¨uhren k¨onnen, dies getan haben,

wird also kein weiterer mehryumsetzen k¨onnen.

Seim≥k3, wobei Schritt(im,8)das letzte Mal ist, dass Zeile 8 ausgef¨uhrt wird.

Dann gilt danach: Alle Prozesse ungleichim werden ihren want-Eintrag nach endlichen vielen Schritten auf False setzen undyverbleibt aufim.

D.h. Prozessimkann an keinem await h¨angen bleiben und muss somit den kritischen Abschnitt erreichen.

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 15/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(39)

Eigenschaften von Lamports Algorithmus

Zusammenfassend:

Erf¨ ullt wechselseitigen Ausschluss Erf¨ ullt Deadlock-Freiheit

Konstante Anzahl an Operationen, wenn nur ein Prozess den kritischen Abschnitt betreten m¨ ochte

Erf¨ ullt keine Starvation-Freiheit

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 16/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(40)

Bounded Waiting

R¨ uckblick:

Starvation-Freiheit: Wenn ein Prozess seinen kritischen Abschnitt betreten m¨ ochte, dann muss er ihn nach endlich vielen Berechnungsschritten betreten.

Sagt nichts dar¨ uber aus, wie lange eine Prozess warten muss

Wartender Prozess: Prozess wartet aktiv solange, bis ein anderer Prozess das Warten beendet

Beispiel: Warten an einem await, bis anderer Prozess Wert ¨ andert, sodass Bedingung war wird.

Aufteilung des Initialisierungscode in: Doorway und Waiting

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 17/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(41)

Bounded Waiting (2)

Restlicher Code

Doorway

Initialisierungscode Waiting

Kritischer Abschnitt

Ausgangscode

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 18/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(42)

Bounded Waiting (3)

Definition

Ein Mutual-Exclusion-Algorithmus erf¨ ullt

r-bounded waiting, wenn f¨ ur jeden Prozess i gilt: Wenn Prozess i den Doorway verl¨ asst, bevor Prozess j (mit j 6= i) den Doorway betritt, dann betritt Prozess j den kritischen Abschnitt h¨ ochstens r Mal, bevor Prozess i den kritischen Abschnitt betritt.

bounded waiting, wenn es ein r ∈ IN gibt, so dass der Algorithmus r-bounded waiting erf¨ ullt.

die FIFO-Eigenschaft, wenn er 0-bounded waiting erf¨ ullt. (FIFO = first-in-first-out)

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 19/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(43)

Bemerkungen

Bounded Waiting impliziert nicht Deadlock-Freiheit!

Lamports Algorithmus erf¨ ullt kein Bounded-Waiting!

FIFO-Eigenschaft informell: Erster Prozess, der den Doorway ¨ uberschritten hat ist als erster im kritischen Abschnitt

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 20/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(44)

Bakery-Algorithmus

Erf¨ ullt die FIFO-Eigenschaft (0-bounded waiting) Idee des Algorithmus:

Im Doorway

” zieht“ Prozess eine Nummer, die gr¨ oßer ist als jede andere vergebene Nummer

Prozess mit kleinster Nummer darf in den KA.

Verfahren wurde wohl in B¨ ackereien benutzt (daher der Name)

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 21/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(45)

Bakery-Algorithmus: Einfache Variante

Initial: f¨ ur i = 1, . . . n number[i]=0 Programm des i. Prozesses

loop forever (1) restlicher Code

(2) number[i] := 1+max (number);

(3) for j:=1 to n do

(4) await number[j]=0 or (number[j],j) ≥

lex

(number[i],i) (5) Kritischer Abschnitt

(6) number[i]=0 end loop

Doorway, Waiting

lex

= lexikographische Ordnung

Annahme: Maximum-Berechnung und Zuweisung atomar

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 22/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(46)

Bakery-Algorithmus: Einfache Variante

Initial: f¨ ur i = 1, . . . n number[i]=0 Programm des i. Prozesses

loop forever (1) restlicher Code

(2) number[i] := 1+max (number);

(3) for j:=1 to n do

(4) await number[j]=0 or (number[j],j) ≥

lex

(number[i],i) (5) Kritischer Abschnitt

(6) number[i]=0 end loop

Doorway, Waiting

lex

= lexikographische Ordnung

Annahme: Maximum-Berechnung und Zuweisung atomar

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 22/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(47)

Bakery-Algorithmus: Einfache Variante

Initial: f¨ ur i = 1, . . . n number[i]=0 Programm des i. Prozesses

loop forever (1) restlicher Code

(2) number[i] := 1+max (number);

(3) for j:=1 to n do

(4) await number[j]=0 or (number[j],j) ≥

lex

(number[i],i) (5) Kritischer Abschnitt

(6) number[i]=0 end loop

Doorway, Waiting

lex

= lexikographische Ordnung

Annahme: Maximum-Berechnung und Zuweisung atomar

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 22/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

(48)

Bakery-Algorithmus: Einfache Variante

Initial: f¨ ur i = 1, . . . n number[i]=0 Programm des i. Prozesses

loop forever (1) restlicher Code

(2) number[i] := 1+max (number);

(3) for j:=1 to n do

(4) await number[j]=0 or (number[j],j) ≥

lex

(number[i],i) (5) Kritischer Abschnitt

(6) number[i]=0 end loop

Doorway, Waiting

lex

= lexikographische Ordnung

Annahme: Maximum-Berechnung und Zuweisungatomar

TCS | 04 Mutual-Exclusion beinProzessen | WS 2020/21 22/37 Tournament-Algorithmen Lamports Algorithmus Bakery-Algorithmus

Referenzen

ÄHNLICHE DOKUMENTE

bereit/ready: Prozess will Schritte ausf¨ uhren, darf aber nicht mindestens ein Prozess l¨ auft immer (z.B. Leerlaufprozess) Scheduler f¨ uhrt Context-Switch aus:.. Bereite

TCS | 08 Semaphore | WS 2020/21 7/76 Einleitung Prozessm. Java

signalC(cond) kann effektlos sein: Entwe- der Prozess in cond wird entblockiert, oder effektlos, wenn cond leer ist. TCS | 09 Monitore | WS 2020/21 17/53 Monitore

Ein Kanal verbindet einen sendenden Prozess mit einem empfangenden Prozess Oft erlaubt: ein Kanal verbindet mehrere sendende und empfangende Prozesse Kan¨ ale sind typisiert:

Im Tuple Space muss ein “Matching Tuple“ vorhanden sein Matching Tuple = gleiche L¨ ange, gleiche Typen, gleiche Werte Falls kein passendes Tuple vorhanden:.. Prozess blockiert, bis

2 Halten und Warten (Hold and Wait): Ein Prozess kann eine Ressource anfordern (auf eine Ressource warten), w¨ ahrend er eine andere Ressource bereits belegt hat.. 3

Sind alle gemeinsamen Ressourcen durch eine totale Ordnung geordnet und jeder Prozess belegt seine ben¨ otigten Ressourcen in aufsteigender Reihenfolge bez¨ uglich der totalen

Atomicity: Alle Operationen einer Transaktion werden durchgef¨ uhrt, oder keine Operationen wird durchgef¨ uhrt.. Verboten: Operation schl¨ agt fehl, aber