Info B VL 16: Monitore und Semaphoren

Ähnliche Dokumente
Info B VL 15: Multi-Threading

Info B VL 17: Deadlocks

Parallele Prozesse. Prozeß wartet

parallele Prozesse auf sequenziellen Prozessoren Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher.

Objektorientierte Programmierung

Info B VL 8: Abstrakte Klassen & Interfaces

Übung zu Grundlagen der Betriebssysteme. 10. Übung

Ausnahmebehandlung in Java

Beispiel für überladene Methode

Info B VL 11: Innere Klassen/Collections

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker

Leser-Schreiber-Realisierung mit Semaphoren

Praktikum aus Softwareentwicklung 2, Stunde 5

Thread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen

Lebenszyklus von Threads

Monitore. Klicken bearbeiten

Parallelität, Threads

Betriebssysteme. Vorlesung im Herbstsemester 2010 Universität Mannheim. Kapitel 6: Speicherbasierte Prozessinteraktion

Informatik B. Vorlesung 8 Synchronisierung von Threads. Dr. Ralf Kunze

Wirtschaftsinformatik II Sommersemester Lo sungshinweise zu den Ü bungen P. Mandl, M. Dolag, B. Rottmüller, et al.

Info B VL 14: Java Collections/Reflections

Nebenläufigkeit mit Java

9. Foliensatz Betriebssysteme

Betriebssysteme. G: Parallele Prozesse. (Teil B: Klassische Problemstellungen, Mutual Exclusion, kritische Regionen)

Aufgabenblatt 7 Musterlösung

Javakurs für Fortgeschrittene

Vorlesung Informatik II

Prozesse. Prozesse sind Programme. Prozesse können aus Unterprozessen bestehen. Prozesshierarchie Unterprozesse Threads

9. Vorlesung Betriebssysteme

Verteilte Systeme CS5001

Proseminar Nichtsequentielle Programmiersprachen WS 2011/2012 Monitore

Nebenläufigkeit mit Java

Programmierung mit Threads in Java

Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus

JedesObjekt(mit ÝÒ ÖÓÒ Þ -Methoden)verfügtübereine. wartender Threads sowie die Objekt-Methoden:

Testen nebenläufiger Objekte

CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik)

Verteilte Systeme. 2. Die Client-Server-Beziehung und daraus resultierende Techniken. 2.2 Nebenläufigkeitstechniken in Java

Aufgabenblatt 8 Musterlösung

Erstes Leser-Schreiber-Problem

U8-1 Motivation von Threads. U8-2 Vergleich von Thread-Konzepten. U8-2 Vergleich von Thread-Konzepten (2) Motivation

Übung Betriebssysteme 11

Java Concurrency Utilities

Programmieren 2 12 Netzwerke

Systemprogrammierung

Literatur. VA SS Teil 5/Messages

WS Parallele Prozesse. Prof. Hannelore Frank. Parallele Prozesse. PetriNetze. Synchronisation UNIX. Wettbewerb PC Krit.Abschnitt Spinlocks

Informatik B - Objektorientierte Programmierung in Java. Vorlesung 21: Threads 2. Inhalt

Nebenläufige Programmierung in Java: Threads

Steffen Heinzl Markus Mathes. Middleware in Java

Rainer Oechsle. Parallele und verteilte. Anwendungen in Java. 4., neu bearbeitete Auflage. Mit 165 Listings, 5 Tabellen und 71 HANSER

Threads. Foliensatz 8: Threads Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015

Java I Vorlesung Nebenläufigkeit

Monitor (eine auf ein Modul bezogene) Klasse

Inhaltsverzeichnis. Carsten Vogt. Nebenläufige Programmierung. Ein Arbeitsbuch mit UNIX/Linux und Java ISBN:

POSIX-Threads. Aufgabe 9 SP - Ü U10.1

I 7. Übung. I-1 Überblick. Besprechung Aufgabe 5 (mysh) Online-Evaluation. Posix Threads. Ü SoS I I.1

Systemprogrammierung

Thread-Konzept in objektorientierten Programmiersprachen. Threads. Threads in Java

Laborskript Verteilte Systeme

Softwaresysteme I Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2007 U9.fm

Gliederung. Monitor (eine auf ein Modul bezogene) Klasse

Java Threads. von Gerhart Mende und Awad Fuad. Fuad Awad & Gerhart Mende ProSeminar parallele Programmierung 1

Informatik 12 Kapitel 2 - Kommunikation und Synchronisation von Prozessen

U8 POSIX-Threads U8 POSIX-Threads

Threads Einführung. Zustände von Threads

Einführung in die Programmierung mit Java

(b.) Welche Möglichkeit gibt es, die Methode run so zu verändern, dass Bora Bora IMMER zuletzt ausgegeben wird?

Synchrone Botschaften

Anwendung (2. Versuch:-) Entkopplung der Locks

Programmiermethodik. Übung 10

9 Synchronisation 9.5 Monitor

Wintersemester 2009/10 Helmut Seidl Institut für Informatik TU München

Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )

Pthreads. David Klaftenegger. Seminar: Multicore Programmierung Sommersemester

Aufgaben Semaphore Übersicht (Dijkstra)

Nebenläufige Programmierung I

Die Anweisungen zweier Prozesse werden parallel bearbeitet, wenn die Anweisungen unabhängig voneinander zur gleichen Zeit ausgeführt werden.

Parallele und verteilte Anwendungen in Java

U9-3 Vergleich von Thread-Konzepten. U9-2 Motivation von Threads. U9-3 Vergleich von Thread-Konzepten (2) U9-1 Überblick

Kapitel 5. Monitore und Synchronisationsbedingungen

Threads In dieser Übung beschäftigen wir uns mit der Realisierung von Threads in Java.

JJ Prozesse und Nebenläufigkeit

Programmieren II. Nebenläufigkeit. Vorlesung 9. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester Threads. Kritische Bereiche

Synchronisation in Java. Invisible Web

Einführung in die Programmierung Blockkurs Java

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Motivation

Übungen zu Systemnahe Programmierung in C (SPiC)

Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Sebastian Maier (Lehrstuhl Informatik 4) Übung 10. Sommersemester 2016

Klausur Nichtsequentielle Programmierung

I Grundlagen der parallelen Programmierung 1

Datenparallelität. Bildverarbeitung Differentialgleichungen lösen Finite Element Methode in Entwurfssystemen

Übungen zu Systemnahe Programmierung in C (SPiC) Sommersemester 2018

Universität Karlsruhe (TH)

Informatik II. Semesterklausur

Übung zu Grundlagen der Betriebssysteme. 11. Übung

Transkript:

Info B VL 16: Monitore und Semaphoren Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 16: Monitore und Semaphoren p.317

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 Info B VL 16: Monitore und Semaphoren p.318

Wdh: Kommunikationsformen Produzent Auftraggeber 1 2 Konsument Auftragnehmer Produzent kann bereits im Voraus produzieren Server kann viele Clients bedienen Info B VL 16: Monitore und Semaphoren p.319

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 Info B VL 16: Monitore und Semaphoren p.320

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

Zustände von Threads (mit Monitor Objekten) vorhanden bereit laufend fertig wenn Zutritt zum Monitor wartend notify() eines anderen Threads blockiert wait() Monitor durch anderen Thread besetzt Info B VL 16: Monitore und Semaphoren p.322

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

Semaphoren (2) Semaphoren sind abstrakte Datentypen: Objekte bestehen aus Zähler 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 Info B VL 16: Monitore und Semaphoren p.324

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

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 Info B VL 16: Monitore und Semaphoren p.326