Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Semaphore void Passieren (semaphore &s) { if (s > 0) { s--;

Ähnliche Präsentationen


Präsentation zum Thema: "Semaphore void Passieren (semaphore &s) { if (s > 0) { s--;"—  Präsentation transkript:

1 Semaphore void Passieren (semaphore &s) { if (s > 0) { s--;
} else { WaitOn (s); } void Verlassen (semaphore &s) { if (ProcessAreWaitingOn (s)) { Signal (s); s++; Semaphore

2 Was sind Semaphore? Semaphore sind geschützte Variablen.
binäre Semaphore/zählende Semaphore Semaphore können nur über die Funktionen P(s) und V(s) verändert werden. P(s) und V(s) sind nicht unterbrechbar (uninterruptible). Verwendung von Semaphoren gegenseitiger Ausschluss von Prozessen Synchronisation von Prozessen

3 Wie arbeiten Semaphore?
void Passieren (semaphore &s) { if (s > 0) { s--; } else { WaitOn (s);} } void Verlassen (semaphore &s) { if (ProcessAreWaitingOn (s)) { Signal (s); } else { s++;}

4 gegenseitiger Ausschluss
zwei Prozesse sollen nicht gleichzeitig im kritischen Bereich sein. semaphore aktiv= 1; void prozess_1() { for (;;) { P(aktiv); kritischer Bereich_1(); V(aktiv); macheWasAnderes(); } } void prozess_2() { for (;;) { P(aktiv); kritischer Bereich_2(); V(aktiv); macheWasAnderes(); } }

5 Prozess-Synchronisation
notwendig z.B. wenn ein Prozess von anderem Prozess abhängig ist semaphore ereignis=0; void prozess_1() { vorher_1(); P(ereignis); nachher_1(); } void prozess_2() { vorher_2(); V(ereignis); nachher_2(); }

6 Erzeuger-Verbraucher Problem
semaphore geleert=1; semaphore gefuellt = 0; int puffer; void erzeuger () { int ergebnis; for (;;) { berechne (ergebnis) P(geleert); puffer = ergebnis; V(gefuellt); } } void verbraucher () { int wert; for (;;) { P(gefuellt) V(geleert); wert = puffer; verarbeite (wert); } }

7 Monitore Ein Monitor enthält Daten und Methoden/Prozeduren.
Nur eine Zugangsmethode kann zur gleichen Zeit aktiv sein. Der Monitor ist besetzt, sobald eine Zugangsmethode ausgeführt wird, Prozesse müssen warten. Pascal, Modula, Java unterstützen Monitor-Konzept.

8 Literatur kroeger/Info-NF-2-Skript.pdf Stefan Middendorf, Reiner Singer: Java, dpunkt.verlag, 1999 Holger Jakobs: Betriebssysteme - Theorie, Skript b.i.b.


Herunterladen ppt "Semaphore void Passieren (semaphore &s) { if (s > 0) { s--;"

Ähnliche Präsentationen


Google-Anzeigen