3.2.11.3.1 Mutex

[gesichtete Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
 
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=Mutex=
<p>
<p>
Zunächst die Definition:
Zunächst die Definition:
Zeile 8: Zeile 6:
== Definition: Mutex ==
== Definition: Mutex ==
<p>
<p>
<loop_index>Mutex</loop_index>
<loop_index id="5fa9786bb0946">Mutex</loop_index>
<loop_area type="definition">
<loop_area type="definition">
<p>
<p>
Zeile 23: Zeile 21:
<br />
<br />
<p>
<p>
<loop_index>mutal exclusion|gegenseitiger Ausschluss|wechselseitiger Ausschluss</loop_index>
<loop_index id="5fa9786bb0950">mutal exclusion</loop_index><loop_index id="5fa9786bd76b3">gegenseitiger Ausschluss</loop_index><loop_index id="5fa9786bd76b8">wechselseitiger Ausschluss</loop_index>
Ein [[Semaphore#Definition:_Binärer_Semaphor|binärer Semaphor]] oder Mutex ist geeignet, um [[Kritischer Abschnitt|kritische Abschnitte]] vor gleichzeitigem Betreten zu sichern. Man spricht in diesem Zusammenhang von einem ''wechselseitigen Ausschluss'' (auf englisch: ''mutual exclusion'') der beteiligten Prozesse.
Ein [[Semaphore#Definition:_Binärer_Semaphor|binärer Semaphor]] oder Mutex ist geeignet, um [[Kritischer Abschnitt|kritische Abschnitte]] vor gleichzeitigem Betreten zu sichern. Man spricht in diesem Zusammenhang von einem ''wechselseitigen Ausschluss'' (auf englisch: ''mutual exclusion'') der beteiligten Prozesse.
</p>
</p>


<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>



Aktuelle Version vom 10. November 2020, 13:49 Uhr

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.