|
|
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 '''<span style="font-family:Courier">s</span>''' 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 '''<span style="font-family:Courier">s</span>''' 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 '''<span style="font-family:Courier">s</span>''' 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, 13: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.