Parallel Programming Semaphores / Reader - Writer - Lock

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
10.2 Wechselseitiger Ausschluss in Hardware
Nsp Semaphore sind einfache Synchronisationsobjekte, ähnlich wie Ereignisse, aber unabhängig von Monitoren: (das) Semaphor: altes Flügelsignal.
Semaphore void Passieren (semaphore &s) { if (s > 0) { s--;
Kapitel 6.1 Nebenläufigkeit und wechselseitiger Ausschluss
Kapitel 7.2 Dining philosophers problem
10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.
Threads Richard Göbel.
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (06 - Anwendungen von Stapeln und Schlangen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
PRJ 2007/1 Stefan Dissmann Motivation Problem: Benutztes Objekt kennt den Kontext seiner Nutzung nicht. Daher kann es in besonderen Situationen keine Entscheidung.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Programmiermethodik Übung 6 Methoden verstehen und entwerfen (erstmal ohne Computer)
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Das Roboterprojekt Einführung Der erste Entwurf Das Thread-Konzept Hindernisse Website.
Informatikunterricht mit Java
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
1 Sg 3 – JSP - Java Server Pages Softwareengineering Praktikum Java Server Pages Nicole Brandstätter Josef Sturm Karl Streicher.
1. Verhalten der Objekte: Operationen Werden in den Klassen definiert Werden (i.d.R.) auf einem Objekt aufgerufen Wird das Empfängerobjekt genannt Weitere.
Parallel Matrix Multiplication
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Parallel Programming Proofs ( yay !)
Parallel Programming Condition Queues
Parallel Programming ( J ) CSP
Einführung in JavaKara
Thread Synchronisation in JAVA
Betriebssysteme Übung 2. Tutorium. Task 1 – Locks (1) Wozu Locks? Dienen dazu, exklusiven Zugriff auf eine Ressource sicherzustellen Lock = binäre Semaphore.
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Letzte Chance!!! Exceptions Thread, Runnable Synchronized Wait, notify, notifyAll Thread States Semaphoren JCSP Swing JOMP Linearizability History Amdahl‘s.
Parallelisierung für Multiprozessor-Maschinen Teil 2.
Parallelisierung für Multiprozessor-Maschinen
Programmiervorkurs WS 2014/15 Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Threads in Java Wiederholung der BS Grundlagen Alois Schütte AOSD1.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Muster nebenläufiger Programmierung concurrent Packet von Java Alois Schütte AOSD1.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Prof. Dr. Alois Schütte Advanced System Programming 1 Das concurrent Paket 1 Überblick 2 Lock 3 Condition 4 Queue 5 Executors.
GTALK. Projektteam Kieslich Lindorfer Schöllhammer.
Sammlungsklassen Array.
Algorithmen und Datenstrukturen 1 SS 2002
Nsp Bedingungssynchronisation Motivation: Wenn für eine Operation auf einem Objekt die Voraussetzung nicht erfüllt ist, ist es häufig angebracht,
Java-Kurs Übung Besprechung der Hausaufgabe
4 Ablaufsteuerung. Ablaufsteuerung (scheduling) = Zuteilung von Betriebsmitteln (resources) – wiederverwendbaren oder verbrauchbaren – an Prozesse, z.B.
Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:
3.2 Bedingungssynchronisation Motivation: Wenn für eine Operation auf einem Objekt die Voraussetzung nicht erfüllt ist, ist es häufig angebracht, auf deren.
Parallel Programming Linearizability
93 Das Monitorkonzept (nach Hoare/Brinch-Hansen 1974) Nur ein Prozess bzw. Thread kann zu einem bestimmten Zeitpunkt im Monitor aktiv sein => gegenseitiger.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 1 Beispiel class SpreadSheet { int cellA1, cellA2, cellA3; synchronized.
Java Programme nur ein bisschen objektorientiert.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Vererbung.
1.Event Queue.
Der kritische Abschnitt
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Felder in Java.
Aufgaben Semaphore Übersicht (Dijkstra)
Grundkurs Informatik mit Java
Redo/Undo Ersetzungsstrategie: LRU
 Präsentation transkript:

Parallel Programming Semaphores / Reader - Writer - Lock

Übersicht 1. Semaphores 1. Semaphores in der Theorie 2. Semaphores in Java 3. Semaphores und Monitors 2. Reader - Writer - Lock

1. SEMAPHORS 1. Seamphores in der Theorie

Semaphore, Definition Konstrukt zur Synchoronisierung von parallelen Abläufen. Stellt zwei Operationen zur Verfügung P()(“Passeren”, Acquire, Up) V()(“Vrijgeven”, Release, Down)

Semaphore, Varianten Binäre Semaphore  Hat nur zwei Zustände ( offen - zu, frei - besetzt, etc.) Counting ( General ) Semaphore  Hat eine bestimmte, endliche Anzahl “Slots”, die via p() “besetzt” und mit v() “freigegeben” werden können.

Semaphore, Verhalten p(), aquire(), up() WENN kein “Slot” frei ist, DANN warte bis ein “Slot” frei ist markiere den “Slot” als besetzt und fahre fort v(), release(), down() markiere einen “Slot” als frei

1. SEMAPHORES 2. Semaphores in Java

Semaphore in Java import java.util.concurrent.Semaphore; // 2 Konstruktoren public Semaphore(int maxAvailable); //default: not fair public Semaphore(int maxAvailable, boolean fair); //Binary Semaphore: new Semaphore(1, fair); public void acquire(); public void acquire(int permits); public void release(); public void release(int permits); // und andere… Vorsicht : tryAcquire(…) ist immer unfair !

Semaphores, Beispiel public class Account { int balance = 0; Semaphore s = new Semaphore(1); public void deposit(int amount) { try { s.acquire(); } catch (InterruptedException e) { //handle interruption } balance += amount; s.release(); } Kein synchronized !

1. SEMAPHORES 3. Semaphores und Monitors

Semaphores = Monitor Semaphores sind äquivalent zu Monitors. Was genau bedeuted das ? Mit Monitors kann man Semaphores implementieren Mit Semaphores kann man Monitors implementieren

Umsetzung von Semaphores  Eclipse ( give me a second …)

Semaphores und Fairness Fairness : Jeder Thread der acquire () aufgerufen hat, kann irgendwann fortfahren ( “eventually” ) Einfache Lösung : FIFO - Queue  Performance nicht optimal

Semaphores anstelle von Monitors public class Buffer { Semaphore lock = new Semaphore(1); //init. free Semaphore cond = new Semaphore(0); //init. closed //… }

2. READER-WRITER-LOCK

Ein ReaderWriterLock Ähnliches Konstrukt wie Semaphore Beobachtung : Solange Threads nur lesen, können sie dies ruhig gleichzeitig tun. Idee : Lesen und Schreiben abwechselnd.  Eine Anzahl Reader - Slots ( wie bei Semaphore )  Ein einziger Writer - Slot  Entweder Reader - Slots besetzt, oder Writer - Slot besetzt

Verwendungsbeispiel class ConcurrentArray { ReaderWriterLock lock = new ReaderWriterLock(numReaders); int[] array; public int get(int i) { lock.acquireRead(); int r = array[i]; lock.releaseRead(); return r } public int set(int i, int v) { lock.acquireWrite(); array[i] = v; lock.release.Writer(); }

Bedingungen Effizient : Wenn Reader - Slots frei sind, sollten neue Reader zugelassen werden Liveness : Jeder Reader / Writer muss irgendwann an die Reihe kommen Fairness : Reader in Reader - Reihenfolge ; Writer in Writer - Reihenfolge Thread nur anhalten wenn unbedingt nötig

Wie Überprüfen? Thread 0 request read Thread 1 request read Thread 0 acquire read Thread 2 request read Thread 1 acquire read Thread 1 release read Thread 1 request write Thread 0 release read Thread 1 acquire write Thread 0 request read Thread 1 release write Thread 2 acquire read Thread 0 acquire read //etc. Nur lesen Nur scheiben Nur lesen

FRAGEN?