Buffl

Betriebssysteme

ml
von michelle L.

Was ist eine Semaphore?

Ein Semaphor s ist ein Objekt, das eine lokale integer-Variable i enthält, die mit einer natürlichen Zahl n initialisiert wird, und das die folgenden atomaren (unteilbaren) Operationen offeriert:

P(s) oder DOWN(s):

i > 0 → i := i - 1; Prozess fährt fort

i = 0 → ausführender Prozess blockiert (Er legt sich am Semaphor schlafen)

Wichtig: Atomarität bedeutet, dass Überprüfen des Wertes, Verändern des Wertes und sich Schlafen legen als eine einzige, unteilbare Operation ausgeführt werden. Dieses vermeidet zeitkritische Abläufe.

V(s) oder UP(s):

i := i + 1;

  • Wenn es blockierte Prozesse gibt, wird einer von ihnen ausgewählt. Er kann seine P-Operation jetzt erfolgreich beenden. Das Semaphor hat in diesem Fall dann weiterhin den Wert Null, aber es gibt einen Prozess weniger, der an dem Semaphor schläft.

  • Erhöhen des Semaphor-Wertes und ev. Wecken eines Prozesses werden ebenfalls als unteilbare Operation ausgeführt

  • Kein Prozess wird bei der Ausführung einer V-Operation blockiert

  • Semaphore, die nur die Werte 0 und 1 annehmen, heißen binäre Semaphore, ansonsten heißen sie Zählsemaphore

  • Binäre Semaphore zur Realisierung des wechselseitigen Ausschlusses.

  • Ein mit n > 1 initialisiertes Zählsemaphor kann zur Kontrolle der Benutzung eines in n Exemplaren vorhandenen Typs von sequentiell wiederverwendbaren Betriebsmitteln verwendet werden

  • P und V sind vom Holländischen proberen und verhogen abgeleitet

  • Semaphore weit verbreitet

  • innerhalb von Betriebssystemen

  • zur Programmierung nebenläufiger Anwendungen

  • Programmierung mit Semaphoren ist oft fehleranfällig, wenn mehrere Semaphore benutzt werden müssen

  • Mutex-locks können als binäre Semaphore angesehen werden


Author

michelle L.

Informationen

Zuletzt geändert