3.2.11.3 Semaphore

[gesichtete Version][gesichtete Version]
Zeile 49: Zeile 49:
<p>
<p>
Ein binärer Semaphor besitzt gemäß seiner Definition ebenso eine Warteschlange und auch die auf ihm operierenden <span style="font-family:Courier">P()</span>- und <span style="font-family:Courier">V()</span>-Operationen.
Ein binärer Semaphor besitzt gemäß seiner Definition ebenso eine Warteschlange und auch die auf ihm operierenden <span style="font-family:Courier">P()</span>- und <span style="font-family:Courier">V()</span>-Operationen.
</p>
<br />
== Definition: P()-Operation eines Semaphors ==
<p>
<loop_index>Semaphor, P()-Operation|P()-Operation Semaphor</loop_index>
<loop_area type="definition">
<p>
Die P()-Operation eines Semaphors ist wie folgt definiert:
</p>
<p>
* Prüfe, ob die Zählvariable des übergebenen Semaphors noch einen Wert größergleich Eins (>=1) besitzt.
</p>
<p>
** Falls ja: verringere den Wert der Zählvariablen um 1 und verlasse die Funktion wieder (der kritische Abschnitt darf also betreten werden).
</p>
<p>
** Falls nein: Der aufrufende Prozess wird angehalten (blockiert) und in die Warteschlange des Semaphors eingereiht (der kritische Abschnitt darf noch nicht betreten werden).
</p>
</loop_area>
</p>
<br />
== Definition: V()-Operation eines Semaphors ==
<p>
<loop_index>Semaphor, V()-Operation|V()-Operation Semaphor</loop_index>
<loop_area type="definition">
<p>
Unter einem '''binären Semaphor''' versteht man einen Semaphor, dessen ganzzahliger Zähler nur die Werte 0 oder 1 annehmen kann.
</p>
</loop_area>
</p>
</p>



Version vom 6. Februar 2015, 15:11 Uhr

Semaphore

Der niederländische Informatiker Edsger Wybe Dijkstra hat das Semaphor-Konzept in den 1960er-Jahren entwickelt, und in seinem Artikel Co-Operating Sequential Processes vorgestellt. Auf Wikipedia findet sich ein Hinweis zur Namensherkunft des Begriffs Semaphor.

Wie im weiteren Verlauf dieses Abschnitts noch zu sehen sein wird, können mit Hilfe des Semaphor-Konzepts eine Reihe von Problemen der Prozesssynchronisation gelöst werden. Als großer Vorteil der Semaphore wird noch zu erkennen sein, dass sie dabei auf aktives Warten verzichten, und somit nicht den Nachteil der Verschwendung von CPU-Zeit haben.

Zunächst einige Definitionen:


Definition: Semaphor

Definition

Unter einem Semaphor versteht man eine Datenstruktur, welche einen ganzzahligen Zähler, sowie eine Warteschlange bereitstellt. Zusätzlich sind zwei atomare Operationen  P()  und  V()  auf diese Datenstruktur definiert.


Ein ganzzahliger Zähler ist in der Programmierung beispielsweise eine einfache Integer-Variable. Diese kann zwar prinzipiell negative oder positive ganzzahlige Werte annehmen, jedoch wird noch zu sehen sein, dass hauptsächlich Werte größergleich Null von Interesse sind.

Eine Warteschlange ist eine klassische Datenstruktur in der Informatik, die nach dem FIFO-Prinzip (First In, First Out) arbeitet. Sie dient hier zur geordneten Aufnahme von Prozessen.

Die Operation P() wird in einigen Quellen auch als down()-Operation betitelt, analog up() anstatt V().


Definition: Binärer Semaphor

Definition

Unter einem binären Semaphor versteht man einen Semaphor, dessen ganzzahliger Zähler nur die Werte 0 oder 1 annehmen kann.

Ein binärer Semaphor besitzt gemäß seiner Definition ebenso eine Warteschlange und auch die auf ihm operierenden P()- und V()-Operationen.


Definition: P()-Operation eines Semaphors

Definition

Die P()-Operation eines Semaphors ist wie folgt definiert:

  • Prüfe, ob die Zählvariable des übergebenen Semaphors noch einen Wert größergleich Eins (>=1) besitzt.

    • Falls ja: verringere den Wert der Zählvariablen um 1 und verlasse die Funktion wieder (der kritische Abschnitt darf also betreten werden).

    • Falls nein: Der aufrufende Prozess wird angehalten (blockiert) und in die Warteschlange des Semaphors eingereiht (der kritische Abschnitt darf noch nicht betreten werden).


Definition: V()-Operation eines Semaphors

Definition

Unter einem binären Semaphor versteht man einen Semaphor, dessen ganzzahliger Zähler nur die Werte 0 oder 1 annehmen kann.


Nach diesen grundlegenden Definitionen folgen mit dem Mutex und dem Zählsemaphor zwei konkretere Konzepte, anhand derer die Einsatzmöglichkeiten von Semaphoren gezeigt werden.


So geht es weiter: