• Keine Ergebnisse gefunden

Info B VL 16: Monitore und Semaphoren

N/A
N/A
Protected

Academic year: 2021

Aktie "Info B VL 16: Monitore und Semaphoren"

Copied!
10
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Info B VL 16: Monitore und Semaphoren

Objektorientiere Programmierung in Java 2003

Ute Schmid (Vorlesung) Elmar Ludwig ( ¨Ubung)

FB Mathematik/Informatik, Universit¨at Osnabr¨uck

Info B VL 16: Monitore und Semaphoren – p.317

(2)

Wdh: Threads

können im Prinzip parallel ausgeführt werden

Vorteil: mehrere Dinge können (quasi) gleichzeitig ausgeführt werden

Beispiel: Annahme von Benutzereingaben und gleichzeitige Erledigung von Aufgaben

in Java: Erzeugung von Thread Objekten

Wenn Threads auf gemeinsamen Daten arbeiten können Probleme entstehen

Synchronisation

(3)

Wdh: Kommunikationsformen

Produzent

Konsument

Auftraggeber

Auftragnehmer

1 2

Produzent kann bereits “im Voraus” produzieren Server kann viele Clients bedienen

Info B VL 16: Monitore und Semaphoren – p.319

(4)

Wdh: Konflikte

Wenn mehrere Threads auf dieselben Daten zugreifen müssen die entsprechenden Anweisungsblöcke

synchronisiert werden

Regelung des Zugriffs durch Monitor-Objekte!

Einseitige Synchronisation bei kausaler Abhängigkeit (Konsument/Produzent): Schreib-/Lese-Konflikte

Zweiseitige Synchronisation bei wechselseitiger Abhängigkeit: Schreib-/Schreib- und

Schreib-/Lese-Konflikte

(5)

Illustration

Beispielprogramm: ConsumerProducer.java

Problem: Ein Produzent kann produzierte Daten eines anderen Produzenten überschreiben, bevor der

Konsument die Daten abgeholt hat

Problem: Produzent kann im Schreiben von Konsument unterbrochen werden, der dannn unvollständige Werte abholt

Lösung?

Info B VL 16: Monitore und Semaphoren – p.321

(6)

Zustände von Threads

(mit Monitor Objekten)

bereit laufend

vorhanden

blockiert

wait()

fertig

wartend

Monitor durch anderen Thread besetzt notify()

Threads zum Monitor

wenn Zutritt

eines anderen

(7)

Semaphoren (1)

Von Dijkstra zur Synchronisation nebenläufiger Prozesse eingeführt.

Begriff aus der Seefahrt: Optisches Signal zum

Passeeren/passer (Passieren) und Vrijgeven/verlaat (Freigeben).

Idee: Prozess wird im Synchronisationsfall blockiert und in Warteschlange eingeordnet.

Die Warteschlange muss in Java nicht explizit definiert werden. Sie existiert implizit als Menge der blockierten Prozesse. Bei der Realisation durch Monitor wird

jedoch durch notify() wird ein Prozess aktiviert (nicht unbedingt der, der am längsten wartet).

Info B VL 16: Monitore und Semaphoren – p.323

(8)

Semaphoren (2)

Semaphoren sind abstrakte Datentypen:

Objekte bestehen aus Z¨ahler und Warteschlange.

Operation P: Zähler wird um eins erniedrigt. Wenn

negativer Wert, dann ist Prozess blockiert. (Warten auf das Eintreten einer Bedingung)

Operation V: Zähler wird um eins erhöht.

(Signalisieren des Eintretens einer Bedingung).

Klasse: Semaphore.java

(9)

Synchronisation mit Semaphoren (1)

Einseitig

Semaphore s = new Semaphore(0);

void process1 () { void process2 () {

// ... // ...

s.V(); // Ereignis signalisieren s.P(); // Ereignis abwarten

// ... // ...

} }

Info B VL 16: Monitore und Semaphoren – p.325

(10)

Synchronisation mit Semaphoren (2)

Wechselseitig (Kritischer Abschnitt)

Semaphore s = new Semaphore(1);

void process1 () { void process2 () {

// ... // ...

s.P(); s.P();

// ... kritischer Abschnitt // ... kritischer Abschnitt

s.V(); s.V();

// ... // ...

} }

Beispielcode: ProdConsDemo.java

Referenzen

ÄHNLICHE DOKUMENTE

Für eine Klasse von Lernaufgaben gibt es mindestens eine Menge E, die zerschmettert werden kann – NICHT jede Menge E kann zerschmettert werden.. Zum Beweis der VC Dimension n muss

• Bei super Suche von unten nach oben Keine java -Methoden vorhanden:. • Wie

Gibt den Wert eines Elements in einer Tabelle oder einer Matrix zurück, das innerhalb der Matrix (Matrix: Wird verwendet, um einzelne Formeln zu erstellen, die mehrere

Denn unter anderem atmosphärische oder geo logische Messungen lassen sich nicht ein- fach wiederholen, falls man die ge- messenen Daten verloren hat oder sie nicht mehr lesen

Die Behandlung kann in der Methode, in der der Fehler aufgetreten ist, selbst oder in einer der diese Methode aufrufenden Methoden?.

Schreiben in eine Datei und Lesen aus einer Datei kann mit FileWriter und FileReader erledigt werden. Die Angabe von Dateien kann über File -Objekte oder

• Klassisches Beispiel für eine komplexe DBMS Anwendung, welche man gerne in einer (physikalisch) sehr kleinen Datenbank haben möchte (Smartcard).. • Bisher meistens nur Adresse und

Ein grosses Potenzial für Smart Services leitet sich laut Rohner auch in den Berei- chen des Bauwerkmonitorings, der Türen, Fenster und Fassaden ab, ebenso bei Smart