Definition und Zweck:
Ein Mutex (Mutual Exclusion, zu Deutsch „gegenseitiger Ausschluss“) ist ein grundlegender Synchronisationsmechanismus in der Informatik und Automatisierungstechnik. Er dient dazu, den konkurrierenden Zugriff mehrerer Tasks (Aufgaben, Programme) auf eine gemeinsam genutzte Ressource zu kontrollieren und zu verhindern, dass diese Ressourcen gleichzeitig von mehr als einer Task verändert werden.
Das Hauptziel eines Mutex ist es, die Datenintegrität zu gewährleisten und Datenkonflikte (Race Conditions) zu verhindern, die in Multitasking-Umgebungen auftreten können, wenn mehrere Tasks gleichzeitig auf dieselben Variablen oder Hardware-Komponenten zugreifen.
Funktionsweise (Beispiel):
- Eine Task möchte auf eine gemeinsam genutzte Ressource zugreifen (z.B. eine globale Variable, eine Datenbank, ein I/O-Modul).
- Bevor sie zugreift, versucht sie, den Mutex „zu sperren“ (Lock).
- Wenn der Mutex frei ist, erhält die Task die Sperre und kann auf die Ressource zugreifen. Andere Tasks, die ebenfalls auf die Ressource zugreifen möchten, müssen warten, bis der Mutex freigegeben wird.
- Nachdem die Task die Bearbeitung der Ressource abgeschlossen hat, gibt sie den Mutex „frei“ (Unlock).
Dies stellt sicher, dass zu jedem Zeitpunkt nur eine Task die geschützte Ressource modifizieren kann.
Relevanz in der Automatisierungstechnik:
Mutexe sind unverzichtbar in modernen SPSen, die Multitasking und den Zugriff mehrerer Tasks auf gemeinsame Daten unterstützen:
- Datenkonsistenz: Schutz von globalen Variablen oder Datenbereichen vor inkonsistenten Zuständen, wenn sie von mehreren zyklischen oder ereignisgesteuerten Tasks gelesen und geschrieben werden.
- Zugriff auf Hardware: Kontrolle des Zugriffs auf gemeinsame I/O-Module oder Kommunikationsschnittstellen.
- Kritische Abschnitte: Schutz von Code-Abschnitten, die auf gemeinsam genutzte Daten zugreifen.
- Echtzeitbetriebssysteme: Grundlegender Bestandteil von Echtzeitbetriebssystemen, die eine deterministische Ausführung und den Schutz von Ressourcen gewährleisten.
Abgrenzung zu Semaphoren:
Während ein Mutex den Zugriff auf eine Ressource exklusiv für eine Task regelt (binär: gesperrt/frei), kann eine Semaphore den Zugriff auf eine begrenzte Anzahl von identischen Ressourcen regeln. Ein Mutex wird oft für den Zugriff auf einzelne, eindeutige Ressourcen verwendet.
Die korrekte Anwendung von Mutexen ist entscheidend für die Stabilität und Zuverlässigkeit von Multitasking-SPS-Programmen.
→ Siehe auch: Semaphore, Datenkonsistenz, Multitasking, Task, SPS-Programmierung, Datenintegrität

