Inhaltsverzeichnis:
- Definition - Was bedeutet Gegenseitiger Ausschluss (Mutex)?
- Techopedia erklärt gegenseitigen Ausschluss (Mutex)
Definition - Was bedeutet Gegenseitiger Ausschluss (Mutex)?
Ein gegenseitiger Ausschluss (Mutex) ist ein Programmobjekt, das den gleichzeitigen Zugriff auf eine gemeinsam genutzte Ressource verhindert. Dieses Konzept wird bei der gleichzeitigen Programmierung mit einem kritischen Abschnitt verwendet, einem Teil des Codes, in dem Prozesse oder Threads auf eine gemeinsam genutzte Ressource zugreifen. Es besitzt immer nur ein Thread den Mutex. Daher wird beim Start eines Programms ein Mutex mit einem eindeutigen Namen erstellt. Wenn ein Thread eine Ressource enthält, muss er den Mutex von anderen Threads sperren, um den gleichzeitigen Zugriff auf die Ressource zu verhindern. Beim Freigeben der Ressource gibt der Thread den Mutex frei.
Techopedia erklärt gegenseitigen Ausschluss (Mutex)
Mutex kommt ins Spiel, wenn zwei Threads gleichzeitig mit denselben Daten arbeiten. Es fungiert als Sperre und ist das grundlegendste Synchronisierungswerkzeug. Wenn ein Thread versucht, einen Mutex abzurufen, erhält er den Mutex, falls dieser verfügbar ist. Andernfalls wird der Thread in den Ruhezustand versetzt. Der gegenseitige Ausschluss reduziert die Latenz und Wartezeiten mithilfe von Warteschlangen und Kontextwechseln. Mutex kann sowohl auf Hardware- als auch auf Software-Ebene durchgesetzt werden.
Das Deaktivieren von Interrupts für die kleinste Anzahl von Anweisungen ist die beste Möglichkeit, Mutex auf Kernelebene durchzusetzen und die Beschädigung gemeinsam genutzter Datenstrukturen zu verhindern. Wenn sich mehrere Prozessoren den gleichen Speicher teilen, wird ein Flag gesetzt, um die Ressourcenerfassung je nach Verfügbarkeit zu aktivieren und zu deaktivieren. Der Besetzt-Wartemechanismus erzwingt Mutex in den Softwarebereichen. Dazu gehören Algorithmen wie der Dekker-Algorithmus, der Schwarz-Weiß-Bäckereialgorithmus, der Szymanski-Algorithmus, der Peterson-Algorithmus und der Lamport-Bäckereialgorithmus.
Für eine effiziente Implementierung von Mutex können sich gegenseitig ausschließende Leser und Lese- / Schreib-Mutex-Klassencodes definiert werden.
