Informatik 3 Sitzung 11 - Praxis Roland Mühlenbernd Prüfungsvorbereitung: Nebenläuge Programmierung Themenblock Nebenläuge Programmierung I Eigenschaften von Prozessen I Synchronisationskonzepte I Konkurrenz I I I I I Kooperation I I I I I Kritische Abschnitte Gegenseitiger Ausschluss (Dekker's Algorithmus, BäckereiAlgorithmus...) Verklemmung & Aushungerung Unteilbarkeit & Ununterbrechbarkeit Algorithmen parallelisieren Betriebsmittel aufteilen Semaphore Monitore NP in Java (Threads, Runnable, Semaphore, synchronized...) Prüfungsvorbereitung: Eigenschaften von Prozessen Einfache Prozesse I schwergewichtig & leichtgewichtig I in Kooperation & in Konkurrenz I Kommunikation untereinander via I I I globaler Daten (Zugrissynchronisation) synchronen Parameteraustausch (e.g. join) asynchronen Botschaftenaustausch (Semaphore) abhängig & unabhängig Synchronisationsmechanismen I für Kooperation/Konkurrenz geeignet I aktives Warten I Klammerung I Verwendung von BS-Operationen I unteilbar & unterbrechbar I für mehr als 2 Prozesse geeignet I Prüfungsvorbereitung: Nebenläuge Programmierung Themenblock Nebenläuge Programmierung √ I Eigenschaften von Prozessen I Synchronisationskonzepte I Konkurrenz I I I I I Kooperation I I I I I Kritische Abschnitte Gegenseitiger Ausschluss (Dekker's Algorithmus, BäckereiAlgorithmus...) Verklemmung & Aushungerung Unteilbarkeit & Ununterbrechbarkeit Algorithmen parallelisieren Betriebsmittel aufteilen Semaphore Monitore NP in Java (Threads, Runnable, Semaphore, synchronized...) Prüfungsvorbereitung: Gegenseitiger Ausschluss Prüfung WS 04/05, Aufgabe 7 Programm 7.1 garantiert gegenseitigen Ausschluss, hat aber zwei Nachteile: I beide Prozesse können nur abwechselnd in ihre kritischen Abschnitte eintreten I aktives Warten Prüfungsvorbereitung: Gegenseitiger Ausschluss Prüfung WS 04/05, Aufgabe 7 Zeige exemplarisch, wie der gegenseitige Ausschluss versagt Prüfungsvorbereitung: Gegenseitiger Ausschluss Prüfung WS 04/05, Aufgabe 7 Zeige exemplarisch, wie der gegenseitige Ausschluss verklemmt Prüfungsvorbereitung: Gegenseitiger Ausschluss Zeige exemplarisch, wie der gegenseitige Ausschluss aushungert I Gelangen beide Prozesse gleichzeitig an ihre Schleife und führen Schleifenanweisungen gleichzeitig aus, so kann keiner seine Schleife beenden (aber: unwahrscheinlich). I Sobald ein Prozess nach need [self ] := false etwas zögert, kann der andere seine Schleife verlassen und den kritischen Abschnitt betreten. Prüfungsvorbereitung: Gegenseitiger Ausschluss Prüfung SoSe 05, Aufgabe 5 I I I Warum ist gegenseitiger Ausschluss garantiert? Die Nachbedingung von enter ist need[self] und not need[not self] → die Nachbedingungen von enter(true) und enter(false) würden sein: need[false], not need[true] und need[true], not need[false] Bemerkung: Prozess true lässt Prozess false den Vortritt, wenn beide anfordern → die Lösung ist nicht fair Prüfungsvorbereitung: Gegenseitiger Ausschluss Prüfung SoSe 05, Aufgabe 5 Zeige, dass Prozess true aushungern lässt. Prüfungsvorbereitung: Bäckerei-Algorithmus Prüfung WS 06/07, Aufgabe 22 Zuweisung ticket[self] = 1 hinzufügen garantiert GA durch funktionierende Prioritäten Zeige, wie gegenseitige Ausschluss versagt Prüfungsvorbereitung: Nebenläuge Programmierung Themenblock Nebenläuge Programmierung √ I Eigenschaften von Prozessen √ I Synchronisationskonzepte √ I Konkurrenz I I I I I Kooperation I I I I I Kritische Abschnitte √ Gegenseitiger Ausschluss (Dekker's Algorithmus, BäckereiAlgorithmus...) √ Verklemmung & Aushungerung √ √ Unteilbarkeit & Ununterbrechbarkeit Algorithmen parallelisieren Betriebsmittel aufteilen Semaphore Monitore NP in Java (Threads, Runnable, Semaphore, synchronized...) Prüfungsvorbereitung: Prüfung WS 04/05, Aufgabe 8 Parallelisierung Prüfungsvorbereitung: Nebenläuge Programmierung Themenblock Nebenläuge Programmierung √ I Eigenschaften von Prozessen √ I Synchronisationskonzepte √ I Konkurrenz I I I I I Kooperation I I I I I Kritische Abschnitte √ Gegenseitiger Ausschluss (Dekker's Algorithmus, BäckereiAlgorithmus...) √ Verklemmung & Aushungerung √ √ Unteilbarkeit & Ununterbrechbarkeit √ √ Algorithmen parallelisieren √ Betriebsmittel aufteilen (Semaphore & Monitore) Semaphore Monitore NP in Java (Threads, Runnable, Semaphore, synchronized...)