Fachwörterlexikon
Suchen Sie hier nach Definitionen zu Fachbegriffen der elektronischen Datenverarbeitung und Informationstechnik! Derzeit umfasst unsere Datenbank 2637 Begriffe, 352 zugehörige Synonyme und weitere Informationen.

Suchbegriff(e) eingeben:

Optionen:
Exakten Ausdruck suchen
Volltextsuche

Suchhinweise:
Die Groß-/Kleinschreibung der Suchbegriffe spielt keine Rolle. Ungültige Zeichen werden aus den Suchbegriffen entfernt.
Verwenden Sie den Singular des Stichwortes, das Sie suchen!
...was sich hinter dem Begriff Restore verbirgt?
 
Semaphore
Textinhalt dieses Artikels kopieren

Semaphore sind Methoden, die in Multitasking-Systemen verwendet werden, um den Zugriff auf gemeinsam genutzte Ressourcen (wie z.B. Arbeitsspeicher) zu regeln. Diese Technik wurde von dem Holländer Edsger Dijkstra entwickelt.

Programmiertechnisch gesehen sind Semaphoren geschütze Variable, die über folgende drei Funktionen gesteuert werden können:

Init(s, v)
{
Semaphore s;
Int v;
s = v;
}
P(s)
{
Semaphore s;
while (s == 0); // warte bis s>0
s = s - 1;
}
V(s)
{
Semaphore s;
s = s + 1;
}

Der Wert einer Semaphore gibt die Anzahl der Prozesse an, die diese Ressource benutzen wollen. Gibt es nur zwei parallele Prozesse, welche die Ressource beanspruchen, so spricht man von binären Semaphoren (Ressource belegt oder nicht belegt).
Die o. g. Funktionen werden dabei wie folgt eingesetzt:
Will ein Prozess die Ressource benutzen, führt er die P()-Funktion aus und damit ist die Ressource belegt. Danach kann er den so genannten kritischen Bereich ausführen, ohne das der andere Prozess diese Ressource nutzt. Sie ist ja belegt. Nachdem der erste Prozess die Ressource nicht mehr nutzt, gibt er sie mit V() wieder frei.

Dieses Szenario gilt auch für mehr als zwei Prozesse: Dabei kann eine Ressource nur von einem Prozess genutzt werden, wenn die Semaphore gerade den Wert Null hat. Will ein Prozess die Ressource für sich nutzen, dekrementiert er die Semaphore, muss jedoch warten bis sie den Wert Null hat, um sie letztendlich nutzen zu können. Wenn er die Ressource wie frei gibt, inkrementiert er die Semaphore.