Folien

Werbung
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...)
Herunterladen