3.2.11.3.1 Mutex

[gesichtete Version][gesichtete Version]
Zeile 28: Zeile 28:


<p>
<p>
Möchte ein Prozess in seinen kritischen Abschnitt eintreten, so muss er zunächst die Funktion '''<span style="font-family:Courier">P(s)</span>''' (bzw. '''<span style="font-family:Courier">down(s)</span>''') aufrufen. Hier wird geprüft, ob die Zählvariable des übergebenen Semaphors&nbsp; '''<span style="font-family:Courier">s</span>'''&nbsp; noch einen Wert größergleich Eins (>=1) besitzt.
Der folgende Abschnitt erläutert den [[Wechselseitiger Ausschluss|wechselseitigen Ausschluss]].
</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 ([[Prozesszustände|blockiert]]) und in die Warteschlange des Semaphors&nbsp; '''<span style="font-family:Courier">s</span>'''&nbsp; eingereiht (der kritische Abschnitt darf noch nicht betreten werden).
</p>
<p>
Am Ende der Bearbeitung eines kritischen Abschnitts muss der betreffende Prozess die Funktion '''<span style="font-family:Courier">V(s)</span>''' (bzw. '''<span style="font-family:Courier">up(s)</span>''') aufrufen. Der Wert der Zählvariable des übergebenen Semaphors&nbsp; '''<span style="font-family:Courier">s</span>'''&nbsp; wird um Eins erhöht, und falls sich in der Warteschlange des Semaphors ein (oder mehrere) Prozess(e) befinden, so entferne den ersten daraus und ändere seinen Zustand in [[Prozesszustände|bereit]]. Bei der nächsten Zuteilung der CPU kann dieser damit seinen kritischen Abschnitt betreten.
</p>
</p>



Version vom 6. Februar 2015, 14:55 Uhr

Mutex

Zunächst die Definition:


Definition: Mutex

Definition

Unter einem Mutex (als Abkürzung für MUTual EXclusion, auf deutsch: gegenseitiger Ausschluss) versteht man einen binären Semaphor.


Mit dieser Definition geht einher, dass ein Mutex eine ganzzahlige Variable besitzt, welche nur die Werte 0 und 1 annehmen darf. Ebenso besitzt er eine Warteschlange, sowie die P()- und V()-Operation.


Ein binärer Semaphor oder Mutex ist geeignet, um kritische Abschnitte vor gleichzeitigem Betreten zu sichern. Man spricht in diesem Zusammenhang von einem wechselseitigen Ausschluss (auf englisch: mutual exclusion) der beteiligten Prozesse.

Der folgende Abschnitt erläutert den wechselseitigen Ausschluss.