Semaphore
« Zurück zum Profi-Tutorials-GlossarSemaphoren sind in der Informatik Variablen oder abstrakte Datentypen, die, zum Beispiel im Mehrprozess-Betrieb von Systemen, für die Kontrolle des Zugriffs auf gemeinsame Ressourcen verwendet werden. Die Variablen werden so beispielsweise zur Lösung kritischer Abschnitte eingesetzt, in denen parallele Zugriffe von Prozessen auf gemeinsame Ressourcen zu einem unerwarteten oder falschen Verhalten führen können.
Eine Semaphore wird meist mit dem Maximalwert der verfügbaren Ressourcen initialisiert. Prozesse die auf eine Ressource zugreifen wollen, müssen dann zunächst die Funktion "Reservieren" aufrufen. Während diesem Zugriffsversuch wird überprüft, ob die Semaphore bereits den Wert 0 erreicht hat, also keine Ressourcen mehr verfügbar sind. Wenn die Semaphore diesen Wert noch nicht erreicht hat, dann wird eine Ressource für den Prozess reserviert und die Semaphore um 1 heruntergezählt Andernfalls wartet der Prozess, bis ein Anderer wieder Ressourcen freigegeben hat, denn mit jeder Freigabe wird die Semaphore um wieder 1 erhöht.
Bei den beschriebenen Semaphoren mit mehr als 2 Zuständen handelt es sich um nicht-binäre Semaphoren. Eine andere Form sind die binären Semaphoren: Diese können aufgrund des Maximalwerts 1 nur zwei unterschiedliche Zustände einnehmen - 0 oder 1.
Angewendet wird das Funktionsprinzip der Semaphoren beispielsweise bei der Programmierung: Sie dienen bei der Prozesssynchronisation dazu, bei einer begrenzte Anzahl Ressourcen eine Reihenfolge herzustellen, in der viele Threads sich diese teilen. So könnten die Threads beispielsweise mithilfe von Semaphoren auf eine feste Anzahl CPU-Kerne verteilt werden. Ein weiteres Beispiel ist die Kapselung von Zugriffen auf gemeinsame Daten: Semaphoren stellen dabei sicher, dass immer nur ein Zugriff zur selben Zeit stattfinden kann.