Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für...
Transcript of Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für...
![Page 1: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/1.jpg)
Mutual Exclusion und Synchronisation
Peter Puschner Institut für Technische Informatik [email protected] 1
![Page 2: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/2.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 2
Gemeinsame Ressourcen BS und Prozesse, parallel laufende Prozesse
– verwenden die selben Daten bzw. Ressourcen (Shared Memory, Files, Geräte)
– tauschen Daten aus und kooperieren
daher brauchen wir: – „disziplinierten“ Zugriff auf gemeinsame Daten/
Ressourcen – geordnete Abarbeitung verteilter Aktionsfolgen
sonst Fehlverhalten: Inkonsistenz bzw. Abhängigkeit der Ergebnisse von Abfolge der Abarbeitungsschritte der einzelnen Prozesse
![Page 3: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/3.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 3
Beispiel 1 Prozess A a = a + 1; mov A, a inc A mov a, A
Prozess B
a = a – 1; mov B, a dec B mov a, B
„parallele“ Ausführung von A u. B
aalt aalt + 1 aalt – 1 aneu:
mov A, a inc A mov a, A
mov B, a dec B mov a, B
Fall 1
mov A, a
inc A mov a, A
mov B, a dec B mov a, B
Fall 2
mov B, a dec B
mov a, B
mov A, a inc A mov a, A
Fall 3
![Page 4: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/4.jpg)
Peter Puschner, TU Wien
loop t := ShM; print(t); end loop
Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 4
Beispiel 2 Prozess A
Prozess B
„parallele“ Ausführung von A u. B
1 1 2 0 2 2 0 1 2
t := 0; loop ShM := t; t := (t+1)
mod 10; end loop
ShM: 0 ShM: 1 print: 1 print: 1 ShM: 2 print: 2
ShM: 0 print: 0 ShM: 1 ShM: 2 print: 2 print: 2
ShM: 0 print: 0 ShM: 1 print: 1 ShM: 2 print: 2
Ausgabe:
![Page 5: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/5.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 5
Überblick • Begriffe und Ziele
– Mutual Exclusion – Condition Synchronization
• Programmierung v. Mutual Exclusion und Bedingungssynchronisation
• Semaphore • Sequencer und Eventcounts • Monitor, Nachrichten, NBW
![Page 6: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/6.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 6
Interaktion von Prozessen • Wechselseitiger Ausschluss (Mutual Exclusion)
– Verhindern des “gleichzeitigen” Zugriffs auf Ressourcen (Atomicity)
– Ziel: Konsistenthalten der Daten
• Bedingungssynchronisation (Condition Synchronisation) – Warten auf das Eintreten einer Bedingung – Ziel: bestimmte Reihenfolge von Operationen
![Page 7: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/7.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 7
Mutual Excl. und Cond. Sync. • Orthogonale Konzepte • Vier mögliche Kombinationen
MutEx. – – + +
CondSync. – + – +
unabhängige Aktionen vorgegebene Abfolge Konsistenthaltung Konsistenz und Abfolge
Ziel
![Page 8: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/8.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 8
Begriffe: Mutual Exclusion P1 P2
kriti
sche
r Abs
chni
tt kritischer Abschnitt
gemeinsame Ressource, gemeinsamer Datenbereich
Daten kritische Region
![Page 9: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/9.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 9
Kritischer Abschnitt • Ein Prozess befindet sich im kritischen
Abschnitt, wenn er auf gemeinsame Daten bzw. Ressourcen zugreift
• Wechselseitiger Ausschluss (mutual exclusion): zu jedem Zeitpunkt darf sich höchstens ein Prozess in seinem kritischen Abschnitt befinden
• Eintritt in kritischen Abschnitt muss geregelt erfolgen
![Page 10: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/10.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 10
Prozessstruktur für krit. Abschnitt • kein Prozess darf in seinen kritischen Abschnitt
eintreten, wenn sich bereits ein Prozess in seinem k.A. befindet
• Prozessstruktur
... Prolog k.A. kritischer Abschnitt Epilog k.A. ...
Eintritts- protokoll
Austritts- protokoll
![Page 11: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/11.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 11
Anforderungen für k.A. Lösung • Mutual Exclusion • Progress
– wenn sich kein Prozess im k.A. befindet und Prozesse in den k.A. eintreten möchten, darf die Entscheidung über den nächsten Prozess nicht unendlich lange verzögert werden
• Bounded Waiting – Nachdem ein Prozess einen Request für den k.A.
abgegeben hat, ist die Anzahl der Eintritte in den k.A. durch andere Prozesse abgeschrankt
![Page 12: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/12.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 12
Arten von Lösungen • Softwarelösungen
– Annahmen: Atomizität einer Lese- bzw. Schreiboperation auf dem Speicher
• Hardwareunterstützte Lösungen – Verwendung spezieller Maschineninstruktionen
• Höhere Synchronisationskonstrukte – stellen dem Programmierer Funktionen und
Datenstrukturen zur Verfügung – Semaphore, Monitor, Message Passing, …
![Page 13: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/13.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 13
Mutual Exclusion in Software
![Page 14: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/14.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 14
Softwarelösungen • Zunächst 2 Prozesse, P0 und P1 • dann Generalisierung auf n Prozesse,
Pi, wobei Pi <> Pj für i <> j • Synchronisation über globale Variable • Busy Waiting: Warten auf das Eintreten einer
Bedingung durch ständiges Testen (busy … benötigt CPU-Zeit)
while Bedingung ≠ true do nothing
![Page 15: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/15.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 15
Dekker-Algorithmus, 1. Versuch
• Mutual Exclusion gegeben • Prozesse können nur abwechselnd in k.A. • Wenn ein Prozess terminiert, wird der andere
Prozess endlos blockiert
var turn: 0 .. 1; global:
Prozess Pi: while turn <> i do nothing; critical section turn = j; remainder section
![Page 16: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/16.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 16
Dekker-Algorithmus, 2. Versuch
• Wenn ein Prozess terminiert, kann der andere Prozess weiterarbeiten
• Mutual Exclusion nicht garantiert
var flag: array [0..1] of boolean; global:
Prozess Pi: while flag[ j] do nothing; flag[i] := true; critical section flag[i] := false; remainder section
flag[i] := false; flag[ j] := false;
Initialisierung:
![Page 17: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/17.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 17
Dekker-Algorithmus, 3. Versuch
• Mutual Exclusion gesichert • aber: Deadlock möglich
var flag: array [0..1] of boolean; global:
Prozess Pi: flag[i] := true; while flag[ j] do nothing; critical section flag[i] := false; remainder section
![Page 18: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/18.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 18
Dekker-Algorithmus, 4. Versuch
• Mutual Exclusion gesichert, kein Deadlock • aber: Lifelock, Prozessoraktivität ohne Produktivität
Prozess Pi: flag[i] := true; while flag[ j] do begin flag[i] := false; wait for a short time; flag[i] := true; end; critical section flag[i] := false; remainder section
![Page 19: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/19.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 19
Dekker-Algorithmus flag[i] := true; while flag[ j] do if turn = j then begin flag[i] := false; while turn = j do nothing; flag[i] := true; end; critical section turn := j; flag[i] := false; remainder section
flag … Zustand der beiden Prozesse
turn … bestimmt die Reihenfolge des Ein- tretens in den k.A. im Falle von völligem Gleichlauf (siehe 4. Versuch)
![Page 20: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/20.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 20
Peterson-Algorithmus
loop flag[i] := true; turn := j; while flag[ j] and turn = j do nothing; critical section flag[i] := false; remainder section end loop
flag[i] := false; flag[ j] := false;
Initialisierung:
eleganter, leichter zu durchschauen als Dekker Alg.
Prozess Pi:
![Page 21: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/21.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 21
Peterson-Algorithmus • Mutual Exclusion
– P0 setzt flag[0] auf true à P1 blockiert – P1 im k.A. à flag[1] = true à P0 blockiert
• kein endloses gegenseitiges Blockieren Annahme: P0 blockiert in while-Schleife
(d.h. flag[1] = true und turn = 1 ) – P1 will nicht in k.A. >< flag[1] = true – P1 wartet auf k.A. >< turn = 1 – P1 monopolisiert k.A. >< P1 muss turn vor
neuerlichem Eintritt in k.A. auf 0 setzen
![Page 22: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/22.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 22
Bakery Algorithm Lösung des k.A.-Problems für n Prozesse • Nummernvergabe für k.A.; Prozess mit der
niedrigsten Nummer (>0) tritt als erstes ein • Nummer 0 … keine Anforderung für k.A. • Pi und Pj mit gleichen Nummern:
Pi kommt vor Pj in k.A., wenn i < j • es gilt stets: neu vergebene Nummer >= vorher
vergebene Nummern
var choosing: array [0..n-1] of boolean; number: array [0..n-1] of integer;
![Page 23: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/23.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 23
loop choosing [i] := true; number [i] := 1 + max(number [0], … , number [n-1]); choosing [i] := false; for j := 0 to n-1 do begin while choosing [ j] do nothing; while number [ j] <> 0 and (number [ j],j) < (number [i],i) do nothing; end; critical section number [i] := 0; remainder section
end loop
![Page 24: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/24.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 24
Hardwareunterstützte Lösungen • Interrupt Disabling
– für Uniprozessorsystem geeignet – aber: Einschränkung des BS beim Dispatching
anderer Tasks – Rückgabe der Kontrolle an das BS? – Schutz von Instruktionssequenzen im BS
• Spezielle Maschineninstruktionen – Test and Set – Exchange (Swap)
![Page 25: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/25.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 25
Test and Set • Hardwareinstruktion, die zwei Aktionen
atomar (d.h. ununterbrechbar) ausführt à Mutual Exclusion
function testset (var i: integer): boolean; begin
if i = 0 then begin i := 1; testset := true; end; else testset := false;
end.
![Page 26: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/26.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 26
Test and Set für k.A.
while not testset (b) do nothing; critical section b := 0; remainder section
var b: integer; b := 0;
globale Var.:
Prozess Pi:
![Page 27: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/27.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 27
Sicherung des k.A. mit „exchange“
• einfacher Prolog für den k.A. für beliebig viele Prozesse • erfordert Busy Waiting • Starvation von Prozessen möglich
key := 1; do exchange (key, b) while key = 1; critical section exchange (key, b); remainder section
var b: integer; b := 0;
globale Var.:
Prozess Pi:
var key: integer; key := 0;
![Page 28: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/28.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 28
Semaphore
![Page 29: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/29.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 29
Semaphore • Synchronisationsmechanismus, der kein Busy
Waiting notwendig macht (vom BS zur Verfügung gestellt)
• Semaphore S: Integer-Variable, auf die nach der Initialisierung nur mit zwei atomaren Funktionen, wait und signal, zugegriffen werden kann
• statt Busy Waiting: Blockieren der wartenden Prozesse in Blocked Queues (siehe Abschnitt „Prozesse“)
![Page 30: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/30.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 30
Semaphore Ziel: Verwendung von Semaphoren zum Sichern
eines kritischen Abschnitts auf “einfache Art”
wait (S); critical section signal (S); remainder section
![Page 31: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/31.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 31
Semaphore - Datenstruktur • Semaphore ist ein Record:
type semaphore = record value: integer; queue: list of process; end;
• Auf einen Semaphor S wartende Prozesse werden in die Blocked Queue von S (S.queue) gestellt
![Page 32: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/32.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 32
Semaphore - Operationen
wait (S): S.value := S.value - 1; if S.value < 0 then add this process to S.queue and block it;
signal (S): S.value := S.value + 1; if S.value <= 0 then remove a process P from S.queue and place P on ready queue;
Semaphore müssen auf einen nicht-negativen Wert (für Mutual Exclusion auf 1) initialisiert werden
init (S, val): S.value := val; S.queue := empty list;
![Page 33: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/33.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 33
Wechselseitiger Ausschluss
• Maximal ein Prozess im k.A. • Reihenfolge, in der Prozesse in den k.A.
eintreten, ist nicht a-priori festgelegt (hängt von Behandlung der Queue ab, typischer Weise FIFO à Bounded Waiting, Fairness)
wait (S); critical section signal (S); remainder section
init (S, 1) Initialisierung:
Prozess Pi:
![Page 34: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/34.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 34
Semaphore - Implementierung • wait und signal müssen als atomare
Operationen ausgeführt werden • Sichern der Semaphoroperationen (= k.A.) mit
Test and Set – zusätzliche Record-Komponente flag in der
Semaphordatenstruktur – Vor k.A.: Busy Waiting mit Test von flag – da wait und signal sehr kurz sind, kommt es kaum
zum Busy Waiting; daher ist der Overhead vertretbar
![Page 35: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/35.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 35
Semaphore - Bemerkungen • S.count >= 0: Anzahl der Prozesse, die
hintereinander ein wait ausführen können, ohne warten zu müssen
• Initialisierung von S mit Wert n à n Prozesse können gleichzeitig in den “k.A.”
• S.count < 0: |S.count| Prozesse in der Queue von S blockiert (in gezeigter Implementierung)
![Page 36: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/36.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 36
Semaphore - Bemerkungen • Binary Semaphore: nimmt nur die Werte 0
oder 1 an • Counting Semaphore: kann beliebige (nicht
negative) ganzzahlige Werte annehmen - implementierungsabhängig
• Operationen wait und signal werden in der Literatur auch als P und V bezeichnet
![Page 37: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/37.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 37
Bedingungssynchronisation • Verschiedene Prozesse: P1 und P2 • Codeabschnitt C1 in P1 muss vor Abschnitt C2
in P2 ausgeführt werden • Semaphore für Bedingungssynchronisation
(Condition Synchronisation)
C1;
Initialisierung:
P1: C2;
P2: signal (S);
wait (S);
init (S, 0)
![Page 38: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/38.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 38
Abwechselnder Zugriff • Beispiel: Datentransfer von P1 an P2 • P1 schreibt, P2 liest Shared Memory • kein Duplizieren bzw. Verlust von Daten
loop gen. data; write ShM; end loop
init (… Init.:
P1: loop read ShM; use data; end loop
P2:
![Page 39: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/39.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 39
Abwechselnder Zugriff • Beispiel: Datentransfer von P1 an P2 • P1 schreibt, P2 liest Shared Memory • kein Duplizieren bzw. Verlust von Daten
loop gen. data; wait (S1); write ShM; signal (S2); end loop
init (S1, 1); init (S2, 0); Init.:
P1: loop wait (S2); read ShM; signal (S1); use data; end loop
P2:
![Page 40: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/40.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 40
Semaphore -- Beispiele
![Page 41: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/41.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 41
Aufgabe • Gegeben: 3 zyklische Prozesse, A, B, C • A produziert Daten und schreibt sie auf ShM • B und C lesen die Daten vom ShM
(ohne Einschränkung der Parallelität) • Datenaustausch findet immer wieder statt • Jeder von A geschriebene Datensatz soll
von B und C genau einmal gelesen werden
???
![Page 42: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/42.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 42
Producer-Consumer Problem • Produzent generiert Information, die vom
Konsumenten gelesen wird – Beispiel: Druckaufträge an einen Drucker
• Einzelne Datensätze werden über einen Puffer an den Konsumenten übergeben
Producer Consumer
b[0] b[1] b[2] b[3] …
![Page 43: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/43.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 43
P-C mit unbegrenztem Puffer • Produzent kann jederzeit ein Datenelement
schreiben • Konsument muss auf Daten warten • “in” zeigt auf nächstes freies Puffer-Element • “out” zeigt auf nächstes zu lesendes Element
b[0] b[1] b[2] b[3] … b[4]
in out
![Page 44: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/44.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 44
P-C: Semaphore • Mutual Exclusion: zu jedem Zeitpunkt darf nur
ein Prozess auf den Puffer zugreifen (Semaphore “S”)
• Bedingungssynchronisation: der Konsument darf nur dann lesen, wenn mindestens ein ungelesenes Datenelement im Puffer steht (Counting Semaphore “N” spiegelt Anzahl der Elemente im Puffer wieder)
![Page 45: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/45.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 45
P-C: Implementierung
loop produce (v); P (S); append (v); V (S); V (N); end loop
init (S, 1); init(N, 0); in := out := 0; Initialisierung:
Producer: Consumer: loop P (N); P (S); w := take ( ); V (S); consume (w) end loop
append (v): b[in] := v; in := in + 1; take ( ): w := b[out]; out := out + 1; return w;
![Page 46: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/46.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 46
P-C mit Ringpuffer • Begrenzter Puffer mit K Elementen • Lesen: mind. ein “neuer” Wert notwendig • Schreiben: mind. ein Element beschreibbar
b[0] b[1] b[2] b[3] … b[4]
in out
b[K-1]
b[0] b[1] b[2] b[3] … b[4]
in out
b[K-1]
![Page 47: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/47.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 47
Ringpuffer: Semaphore • Semaphore wie bei unbegrenztem Puffer
– Mutual Exclusion: zu jedem Zeitpunkt darf nur ein Prozess auf den Puffer zugreifen (S)
– Bedingungssynchronisation: der Konsument darf nur dann lesen, wenn mindestens ein ungelesenes Datenelement im Puffer steht (N)
• Bedingungssynchronisation: der Produzent darf nur dann schreiben, wenn mindestens ein leerer Speicherbereich vorhanden ist (E)
![Page 48: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/48.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 48
P-C Ringpuffer-Implementierung
loop produce (v); P (E); P (S); append (v); V (S); V (N); end loop
init (S, 1); init (N, 0); init (E, K ); in := out := 0;
Initialisierung:
Producer: Consumer: loop P (N); P (S); w := take ( ); V (S); V (E); consume (w) end loop
append (v): b[in] := v; in := (in + 1) mod K; take ( ): w := b[out]; out := (out + 1) mod K; return w;
![Page 49: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/49.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 49
… P (S); P (N); w := take ();
Reihenfolge von P und V
produce (v); P (E); P (S); append (v);
Producer: Consumer:
Reihenfolge von V-Operationen “beliebig” Achtung: Abfolge von P-Operationen ist relevant!
vertauscht! falsch!!!
Systemverklemmung (Deadlock), wenn Consumer bei leerem Puffer (N=0) in k.A. eintritt.
![Page 50: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/50.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 50
Reader-Writer Problem • Es gibt Lese- und Schreibeprozesse, die auf
eine gemeinsame Ressource zugreifen • Beliebig viele Leser dürfen parallel lesen • Schreiber benötigen exklusiven Zugriff
![Page 51: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/51.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 51
Reader-Writer Problem
loop P (x); rc := rc + 1; if rc = 1 then P (wsem); V (x); read; P (x); rc := rc - 1; if rc = 0 then V (wsem); V (x); end loop
Reader: loop P (wsem); write; V (wsem); end loop
Writer:
Leser haben Priorität
init (x, 1); init (y, 1); init (z, 1); init (wsem, 1); init (rsem, 1); rc := 0; wc := 0;
![Page 52: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/52.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 52
Reader-Writer Problem loop P (rsem); P (x); rc := rc + 1; if rc = 1 then P (wsem); V (x); V (rsem); read; P (x); rc := rc - 1; if rc = 0 then V (wsem); V (x); end loop
Reader: loop P (y); wc := wc + 1; if wc = 1 then P (rsem); V (y); P (wsem); write; V (wsem); P (y); wc := wc - 1; if wc = 0 then V (rsem); V (y); end loop
Writer:
Schreiber haben Priorität
P (z); V (z);
![Page 53: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/53.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 53
Dining Philosophers Problem • klassisches Problem der
Synchronisation • 5 Philosophen denken
und essen • jeder braucht zum Essen
zwei Gabeln • gesucht: Lösung ohne
Deadlock und Starvation
![Page 54: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/54.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 54
Dining Philosophers Problem • Jedem Philosophen
entspricht ein Prozess • Ein Semaphore pro
Gabel
• Erster Versuch:
fork: array[0..4] of semaphore;
foreach i in [0..4] init (fork[i], 1);
Prozess Pi: loop think; P (fork[i]); P (fork[(i+1) mod 5]); eat; V (fork[(i+1) mod 5]); V (fork[i]); end loop
Erster Versuch: Deadlock, wenn alle Philosophen gleichzeitig die erste Gabel aufnehmen
![Page 55: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/55.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 55
Dining Philosophers: Lösungen • Zusätzlicher Semaphore, der maximal 4
Philosophen gleichzeitig das Aufnehmen einer Gabel erlaubt
• Mindestens ein Prozess nimmt die Gabeln in umgekehrter Reihenfolge auf
• atomare P-Operation für mehrere Semaphore
mP (fork[i], fork[(i+1) mod 5]);
![Page 56: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/56.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 56
P und V für mehrere Semaphore • mP, mV: atomare Operationen P und V für eine
Menge von Semaphoren • mP (S1, S2, …, Sn): blockiert solange, bis alle
Semaphore S1 bis Sn größer als 0 sind – Löst Problem der Reihung von P-Operationen
• mV (S1, S2, …, Sn): erhöht alle Semaphore S1 bis Sn um eins
![Page 57: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/57.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 57
Spinlocks • Mehrwertige Semaphore mittels Busy Waiting
realisiert • Sicherung kurzer kritischer Abschnitte auf
Multiprozessorsystemen • CPU-Overhead, aber kein Process Switch
P (S): S := S - 1; while S < 0 do nothing;
V (S): S := S + 1;
![Page 58: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/58.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 58
Sequencer und Eventcounts
Mechanismen zur direkten Steuerung der Reihenfolge von Aktionen (Cond.Sync.)
![Page 59: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/59.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 59
Eventcounts Ereigniszähler
Eventcount E: ganzzahlige Variable zum Zählen der Vorkommnisse von Ereignissen. Der Anfangswert von E ist 0. advance (E): erhöht E um 1 await (E, val): blockiert Prozess bis E >= val
![Page 60: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/60.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 60
Beispiel Eventcounts Nach jedem 10ten Vorkommnis eines Events E1
soll die Aktion S1 durchgeführt werden.
t := 0; loop t := t+10; await (E, t); S1; end loop
Bei jedem Auftreten von E1:
advance (E);
P1:
![Page 61: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/61.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 61
Sequencer Sequencer S: ganzzahlige Variable mit
Anfangswert 0, auf der die Operation ticket definiert ist.
ticket (S): atomare Aktion, liefert den Wert des Sequencers S und erhöht anschließend den Wert von S um 1.
Eventcounts und Sequencer: vgl. Ausgabe von Nummern und Warten auf Aufruf an einem Schalter (Behörde, Arzt, etc.)
![Page 62: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/62.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 62
sequencer: S; eventcount: E; await (E, ticket (S)); critical section; advance (E);
E und S: Mutual Exclusion • Sicherung eines k.A.
semaphore: S; init (S, 1); P (S); critical section; V (S);
vgl.:
![Page 63: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/63.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 63
E und S: Producer-Consumer
loop produce (v); t := ticket (Pticket); -- nur ein Producer await (In, t); -- schreibbares Element await (Out, t-K+1); b[ t mod K ] := v; -- Element geschrieben -- nächster Producer advance (In); end loop
sequencer: Pticket, Cticket; eventcount: In, Out;
Producer: Consumer: loop u := ticket (Cticket); -- nur ein Consumer await (Out, u); -- lesbare Daten await (In, u+1); w := b[ u mod K ]; -- Daten gelesen -- nächster Consumer advance (Out); consume (w) end loop
![Page 64: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/64.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 64
Eventcounts mit/ohne Sequencer • Eventcounts mit Sequencern, wenn sich neu
ankommende Prozesse mit den laufenden Prozessen aufsynchronisieren müssen (z.B., Server mit mehreren Clients)
• Verwendung von Eventcounts ohne Sequencer – Bedingungssynchronisation – fixe Menge von parallelen Prozessen – vordefiniertes (ev. zyklisches) Synchronisationsmuster – Ablaufsteuerung durch eine State Machine
![Page 65: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/65.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 65
Eventcounts ohne Sequencer
t := 0; loop await (E, t); S0_act; advance (E); t := t+3; end loop
loop S0; end loop
loop S1; end loop
loop S2; end loop
t := 1; loop await (E, t); S1_act; advance (E); t := t+3; end loop
t := 2; loop await (E, t); S2_act; advance (E); t := t+3; end loop
![Page 66: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/66.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 66
Distributed Mutual Exclusion
Zugriff auf gemeinsame Ressource: • Lokale Kopie von E auf jedem Knoten • ticket (S): Ticket vom Master anfordern • advance (E): Nachricht an alle Knoten, dass die
lokale Kopie des Eventcounts zu erhöhen ist • await (E, val): unverändert
Rechner Rechner Rechner
Rechner Interface
![Page 67: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/67.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 67
Probleme mit Sync-Konstrukten • Semaphoroperationen bzw. Operationen mit
Eventcounts und Sequencern sind über Prozesse verteilt, daher unübersichtlich
• Operationen müssen in allen Prozessen korrekt verwendet werden
• Ein fehlerhafter Prozess bewirkt Fehlverhalten aller Prozesse, die zusammenarbeiten
➭ Monitore
![Page 68: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/68.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 68
Monitor, Nachrichten und NBW Protokoll
![Page 69: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/69.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 69
Monitor • Softwaremodul, bestehend aus:
– Prozeduren – Lokalen Daten – Initialisierungscode
• Eigenschaften – Zugriff auf lokale Variable: Monitorprozeduren – Eintritt von Prozessen in den Monitor über
Monitorprozeduren – max. 1 Prozess zu jedem Zeitpunkt im Monitor
![Page 70: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/70.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 70
Monitor • Monitor sorgt für Mutual Exclusion, kein
explizites Programmieren • Gemeinsamer Speicher ist im Monitorbereich
anzulegen • Prozesssynchronisation über Monitorvariable
– Programmierung von Wartebedingungen für Bedingungsvariable (Condition Variables)
– Monitoreintritt, wenn Wartebedingungen der Bedingungsvariablen erfüllt sind
![Page 71: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/71.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 71
Condition Variables • Lokal im Monitor (Zugriff nur im Monitor) • Zugriff nur über die Zugriffsfunktionen
– cwait (c): blockiert aufrufenden Prozess bis Bedingung(svariable) c den Wert true annimmt
– csignal (c): Setze einen Prozess, der auf die Bedingung c wartet, fort
• wenn mehrere Prozesse warten, wähle einen aus • wenn kein Prozess wartet, keine Aktion • keine speichernde Wirkung (< > Semaphore-wait)
![Page 72: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/72.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 72
Prozedur Prozedur
Monitor
Prozedur
Local Data
Cond. Var.
Procedure
Init. Code
cwait (c1)
cwait (cn)
csignal
Cond. c1
Cond. cn
Urgent Queue
Entering Processes
Waiting Area Monitor
![Page 73: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/73.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 73
Monitor: Producer-Consumer
b: array[0..K-1] of items; In := 0, Out := 0, cnt := 0 : integer; notfull, notempty: condition;
append (v): if (cnt = K) cwait (notfull); b[In] := v; In := (In + 1) mod K; cnt := cnt + 1; csignal (notempty);
take (v): if (cnt = 0) cwait (notempty); v := b[Out]; Out := (Out + 1) mod K; cnt := cnt - 1; csignal (notfull);
monitor ProducerConsumer
![Page 74: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/74.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 74
Message Passing • Methode zur Interprozesskommunikation (IPC)
– für einzelne Computer und verteilte Systeme
• Mechanismus für Synchronisation und Mutual Exclusion
• Eine Nachricht ist eine atomare Datenstruktur • Funktionen zum Senden und Empfangen
– send (destination, message) – receive (source, message)
![Page 75: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/75.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 75
Charakteristika von Nachrichten • Synchronisation
– send: blocking, non-blocking – receive: blocking, non-blocking, test for arrival
• Datenverwaltung – Warteschlange (Queue) – Empfangene Daten überschreiben alte Werte
• Adressierung – 1:1 vs. 1:N
physikalisch, logisch; direkt, indirekt (Mailbox, Portadressierung)
![Page 76: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/76.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 76
Mailbox und Portadressierung
P1
Pn
Q1
Qn
Mailbox
…
…
P1
Pn
Q Port
…
![Page 77: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/77.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 77
Ereignis- vs. Zustandsnachricht • Ereignisnachricht (Event Message)
– send: Queue für neue Nachrichten (blocking oder non-blocking)
– receive: Konsumieren beim Lesen (Queue)
• Zustandsnachricht (State Message) – send: nicht-blockierendes Senden eines
Speicherinhalts – receive: Überschreiben der alten Datenwerte,
Lesen ist nicht konsumierend – Semantik ähnlich Variablensemantik
![Page 78: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/78.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 78
Ereignisnachricht für MutEx • Prozesse verwenden eine gemeinsame Mailbox
mutex und eine Nachricht (Token) • Blocking receive, (non-blocking) send
loop receive (mutex, msg); critical section; send (mutex, msg); remainder section; end loop
Prozess Pi:
![Page 79: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/79.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 79
Non-Blocking Write Protokoll • Bisher genannte Mechanismen für Mutual
Exclusion führen zum Blockieren von Prozessen • Blockieren kann in speziellen Situationen
Probleme verursachen – Beispiel: Schreiber möchte die Uhrzeit aktualisieren,
aber ein Leser niedriger Priorität wird im kritischen Abschnitt (beim Lesen der Uhrzeit) von einem Prozess höherer Priorität unterbrochen.
![Page 80: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/80.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 80
NBW-Protokoll Annahmen • “Verteiltes” System • Kommunikation über gemeinsamen Speicher
(shared Memory) • Es gibt genau einen Schreiber mit einem
eigenen Prozessor (kein Wettstreit um CPU) • Es gibt mehrere Leser (auf einer oder mehreren
anderen CPUs) • Schreibintervalle sind groß im Vergleich zur
Dauer eines Schreibzugriffs
![Page 81: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/81.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 81
NBW - Forderungen • Konsistenz: Ergebnisse von Leseoperationen
müssen konsistent sein • Non-Blocking Property: Der Schreiber darf nicht
von Lesern blockiert werden • Timeliness: Die Verzögerung von Prozessen, die
Leseoperationen ausführen, muss zeitlich abschrankbar sein
![Page 82: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/82.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 82
NBW-Protokoll Beschreibung
CCF_old := CCF; CCF := CCF_old + 1; write; CCF := CCF_old + 2;
Writer:
CCF := 0; /* concurrency control flag */ Initialisierung:
do CCF_begin := CCF; read; CCF_end := CCF; while CCF_end <> CCF_begin or CCF_begin mod 2 = 1
Reader:
CCF Arithmetik in Praxis: Restklassenarithmetik modulo (2 * bigN)
![Page 83: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/83.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 83
NBW-Protokoll Korrektheit Folgende Szenarien sind zu untersuchen:
Read Write
Write Read
Read Write
Write Read
Read
Write
1.
2.
3.
4.
5.
6.
![Page 84: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/84.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 84
Zusammenfassung • Anforderungen paralleler Prozesse
– Konsistenter Zugriff auf gemeinsame Daten – Vorgegebene Reihenfolge von Aktionen
• Mutual Exclusion à Konsistenz • Condition Synchronization à Reihenfolge • Kritischer Abschnitt
– Aktionen, die gemeinsame Daten manipulieren – mit Konstrukten zur Synchronisation gesichert
![Page 85: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/85.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 85
Zusammenfassung • Sicherung des kritischen Abschnitts
– Lösungen abhängig vom Instruction Set – Unterstützung durch Betriebssystem
➭ kein Busy Waiting!
• Semaphore – init, wait und signal, bzw. P und V – Achtung: Reihenfolge der wait Operationen
• Eventcounts und Sequencer – await, advance, ticket – Offene vs. klar vordefinierte Synchronisationsfolge
![Page 86: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1](https://reader035.fdocuments.net/reader035/viewer/2022081400/60611470e4586973d95a84f4/html5/thumbnails/86.jpg)
Peter Puschner, TU Wien Vorlesung Betriebssysteme, Mutex & Sync.; WS 11/12 86
Zusammenfassung • Monitor
– Kapselung von gemeinsamen Objekten, Zugriffsfunktionen und Bedingungsvariablen
• Messages – Atomare Datenstruktur – Synchronisationssemantik
• Non-Blocking Write Protokoll