86
Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik [email protected] 1

Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik [email protected] 1

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Mutual Exclusion und · Mutual Exclusion und Synchronisation Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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