Nsp3.31 3.3 Semaphore sind einfache Synchronisationsobjekte, ähnlich wie Ereignisse, aber unabhängig von Monitoren: (das) Semaphor: altes Flügelsignal.

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

10.2 Wechselseitiger Ausschluss in Hardware
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Kapitel 5. Stacks und Queues
Synonyme: Stapel, Keller, LIFO-Liste usw.
Semaphore void Passieren (semaphore &s) { if (s > 0) { s--;
VO2 Laden und Initialisieren der Sounds. Wir wollen Sounds in unsere Applikation laden Menü erweitern –um den Menüpunkt Sound –mit dem Identifier ID_ULTRIS_SOUND.
Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler.
Kapitel 7.2 Dining philosophers problem
Java: Objektorientierte Programmierung
FH-Hof Deadlocks Richard Göbel. FH-Hof Deadlock - Definition Menge von Prozessen ist an einem Deadlock beteiligt: wenn jeder Prozess in dieser Menge auf.
Java: Grundlagen der Objektorientierung
Erweiterte Zuweisungskompatibilität
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
DO...WHILE Anweisung.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
V09 Fallende Formen, Geschwindigkeitsregelung und Timing Daniel Ebner Spieleprogrammierung mit DirectX und C++
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 10 Claudio Moraga; Gisbert Dittrich FBI Unido
3.1.4 Leser/Schreiber-Ausschluß (reader/writer exclusion)
Imperative Programmierung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
§14 Basis und Dimension (14.1) Definition: V sei wieder ein K-Vektorraum. Eine Menge B von Vektoren aus V heißt Basis von V, wenn B ist Erzeugendensystem.
§8 Gruppen und Körper (8.1) Definition: Eine Gruppe G ist eine Menge zusammen mit einer Verknüpfung, die jedem Paar (a,b) von Elementen aus G ein weiteres.
Einfach verkettete Listen
Einfach verkettete Listen (OOP)
Effiziente Algorithmen
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Real Time Operating System
Thread Synchronisation in JAVA
Prof. Dr.-Ing. Franz-Josef Behr
Zustandsübergangsdiagramme (1)
EPROG Tutorium #6 Philipp Effenberger
Letzte Chance!!! Exceptions Thread, Runnable Synchronized Wait, notify, notifyAll Thread States Semaphoren JCSP Swing JOMP Linearizability History Amdahl‘s.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Schutzvermerk nach DIN 34 beachten Mehrere XControl arbeiten auf einem Teilnehmer.
Dynamische Prioritäten Statische Prozess-Prioritäten sind sinnvoll, falls Prozesse in wenige Klassen einteilbar (3.3.3) Dynamische Prioritäten.
Nsp Bedingungssynchronisation Motivation: Wenn für eine Operation auf einem Objekt die Voraussetzung nicht erfüllt ist, ist es häufig angebracht,
Vs51 5 Verteilte Datenverwaltung. vs52 Situation:Zusammengehöriger Datenbestand ist über mehrere Stationen verteilt, z.B. Fragmentierung: in mehrere Fragmente.
4 Ablaufsteuerung. Ablaufsteuerung (scheduling) = Zuteilung von Betriebsmitteln (resources) – wiederverwendbaren oder verbrauchbaren – an Prozesse, z.B.
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 Semaphores / Reader - Writer - Lock
Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 3 / 1 Algebraische Hülle und Homomorphie A = [A, F ] sei  -Algebra. Eine.
 Sortigkeit oder Arität
1 _____________________________________________ Der Zugang zu den Lernprogrammen für Ausbilder erfolgt über das allgemeine Lernportal der HWK ► (Internet-Explorer,
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Dynamischer Speicher malloc wird in c++ eher nicht mehr verwendet.
Der kritische Abschnitt
Die Struktur einer Java-Klasse
Aufgaben Semaphore Übersicht (Dijkstra)
Implementieren von Klassen
 Präsentation transkript:

nsp Semaphore sind einfache Synchronisationsobjekte, ähnlich wie Ereignisse, aber unabhängig von Monitoren: (das) Semaphor: altes Flügelsignal – wie bei der Bahn (engl. semaphore:auch Flaggensignal bei der Marine) Operationen: P() steht für (holl.) passeren V() steht für (holl.) verhogen oder vrijgeven Synonyme für P/V: up/down, wait/signal (Dijkstra 1968)

nsp Definition des Typs Semaphor mit Hilfe eines verzögerten Monitors: MONITOR Semaphore { private int signals; public Semaphore(int init) PRE init >= 0 {signals = init;} Vorschuss von Signalen public void P() WHEN signals > 0 {signals--;} verbraucht Signal public void V() {signals++;} } erzeugt Signal Fairness: FCFS

nsp oder abstrakter, ohne Bezug auf Monitor-Semantik: Die Anzahl der abgeschlossenen P / V -Operationen auf einem bestimmten, mit n initialisierten Semaphor sei p bzw. v. Dann gilt die folgende Invariante: Mit anderen Worten: V kann stets ausgeführt werden, P aber nur dann, wenn

nsp3.34 Beachte: P/V entsprechen einfachen Operationen request/release auf einem Ressourcen-Pool Achtung!Semaphore nicht mit Ereignissen verwechseln! Weitere Terminologie – entsprechend dem aktuellen Verhalten: Boolesches Semaphor: hat Invariante signals <= 1, verhält sich wie Sperrvariable (3.1.5 )3.1.5 privates Semaphor: nur ein Prozess führt P -Operationen darauf aus (Konsequenz: Frage nach Fairness ist irrelevant)

nsp3.35 Verallgemeinerte Semaphor-Operationen: void P(int n) void V(int n) (vgl. request/release ) static void P(s1,s2,..) static void V(s1,s2,..) (vgl. Mehrobjekt-Sperren (3.1.6 )3.1.6

nsp Sperren mit Semaphoren Ein Semaphor kann als Sperrvariable verwendet werden: der Effekt von x.lock();..... ; x.unlock(); wird erzielt durch mutex.P();..... ; mutex.V(); mit Semaphore mutex = new Semaphore(1); ( = Boolesches Semaphor)

nsp3.37 Ist der zu schützende Abschnitt nur halbkritisch, kann das Semaphor entsprechend initialisiert werden. Beispiel: interaktives nichtsequentielles Programm schützt Benutzer vor Informationsüberflutung durch Begrenzung der Anzahl der zu einem Zeitpunkt auf dem Bildschirm erscheinenden Dialogfenster: Semaphore sema = new Semaphore(3); sema.P(); open dialogue; display output; accept input; close dialogue; sema.V();

nsp3.38 Ressourcen-Verwaltung ( ): class Resources { private final Stack pool; private final Semaphore available; public Resources(Stack pool){ this.pool = pool; available = new Semaphore(pool.length()); } public Resource request() { available.P(); synchronized(pool){return pool.pop();} } public void release(Resource r) { synchronized(pool){pool.push(r);} available.V(); }

nsp Puffer-Varianten class Buffer { private final Queue queue; private final Semaphore frame; private final Semaphore messg; public Buffer(int size) { queue = new LinearQueue(size); frame = new Semaphore(size); messg = new Semaphore(0); } Delegation an LinearQueue aus 3.2.3:3.2.3

nsp3.310 public void send(Object m) { frame.P(); // außerhalb des kritischen Abschnitts ! synchronized(queue){queue.append(m);} messg.V(); } public Object recv() { Object m; messg.P(); synchronized(queue){m = queue.remove();} frame.V(); return m; } public int length() { synchronized(queue){return queue.length();} }

nsp3.311 Spezialfall: Puffer mit einem Platz: class Box { protected double box; private final Semaphore empty = new Semaphore(1); private final Semaphore full = new Semaphore(0); public void send(double m) { empty.P(); box = m; // kein Ausschluß erforderlich ! full.V(); } public double recv() { full.P(); double m = box; empty.V(); return m; }

nsp Äquivalenz von Semaphoren und Monitoren Semaphore können mit Monitoren implementiert werden (3.3.1 )3.3.1 Die Umkehrung gilt ebenfalls – siehe unten ! Somit sind Semaphore und Monitore hinsichtlich ihrer Synchronisationsfähigkeiten gleich mächtig.

Beispiel – Monitor mit signal-and-return: class Monitor { // "Sema" means "Semaphore" protected final Sema mutex = new Sema(1); protected class Event { private int waiting = 0; private Sema ready = new Sema(0); public void wait() { waiting++; mutex.V(); ready.P(); waiting--; } public void signal() { if(waiting != 0) ready.V(); else mutex.V(); break Monitor; }//almost Java! } Für andere Monitor-Varianten ähnlich.

14 Damit z.B. class X extends Monitor { private final Event e = new Event();... public void op1() {// if result, modify... mutex.P();... e.wait();... mutex.V(); } public void op2() {// no result possible mutex.P();... e.signal(); mutex.V(); // disposable }