Willkommen in der Welt der Semaphore!
Hier können Sie auf spielerische Weise die Probleme der Prozesssynchronisation erleben.
Hier können Sie in verschiedenen Szenarien die Rolle des Schedulers übernehmen und versuchen, Synchronisationsprobleme zu verursachen.
Einführendes Beispiel zur Prozesssynchronisation.
Verschiedene Versuche, zwei Prozesse zu synchronisieren – mehr oder weniger erfolgreich.
Naiver Ansatz zum wechselseitigen Ausschluss mit einer globalen Variablen.
Verbesserter Ansatz zum wechselseitigen Ausschluss mit zwei globalen Variablen.
Funktionsfähiger wechselseitiger Ausschluss zweier Prozesse.
Motivation von Semaphoren zur Lösung des Synchronisierungsproblems.
Paralleles Hochzählen einer Variablen ohne Semaphore.
Paralleles Hochzählen einer Variablen mit einem Semaphor.
Paralleles Hochzählen einer Variablen mit einem Semaphor.
Implementierung von Semaphoren mithilfe atomarer Aktionen.
Implementierung eines Semaphors mit FetchAndAdd.
Implementierung eines Semaphors mit FetchAndAdd, 3 Prozesse.
Implementierung eines Semaphors mit FetchAndAdd, Implementierungsvariante.
Implementierung eines Semaphors mit FetchAndAdd, das bisher aufgetretene Problem wurde gelöst.
Verwendung von Semaphoren zur Lösung verschiedener Probleme.
Naiver Ansatz zur Lösung des Erzeuger-Verbraucher-Problems.
Lösung des Erzeuger-Verbraucher-Problems mit drei Semaphoren.
Lösung des ersten Readers-Writers-Problems (Vorrang für Leser).
Lösung des ersten Readers-Writers-Problems (Vorrang für Leser).
Beispiele für Fehler bei der Anwendung von Semaphoren.
Übungsaufgaben zum Selbststudium.
Hier drehen wir den Spieß um: Jetzt müssen Sie alle Prozesse korrekt synchronisieren!
Schaffen Sie es, die Prozesse korrekt zu synchronisieren?
Weil zwei Prozesse zu einfach sind!
Sind zweimal zwei Prozesse auch doppelt so schwer wie zwei Prozesse?
Sechs Prozesse?! Das passt doch auf keine Kuhhaut keinen Bildschirm!