Nebenläufige Programmierung

Slides:



Advertisements
Ähnliche Präsentationen
Vertieferseminar Geoinformation WS 02/03
Advertisements

Kapitel 11 Deadlocks RW-Systemarchitekur Kap. 11.
10.2 Wechselseitiger Ausschluss in Hardware
Konzepte objektorientierter Systeme
Beim Start eines Prozesses in Windows NT, 2000 wird a der Programmtext aus der exe-Datei ab der dort angegebenen Adresse gespeichert.
C Tutorium – Semaphoren –
6. Der OpenMP Standard Direktiven-basiertes API zur Programmierung von Parallelrechnern mit gemeinsamem Speicher für FORTRAN, C und C++
Semaphore void Passieren (semaphore &s) { if (s > 0) { s--;
Enno Rehling und Roger Butenuth, Uni-GH Paderborn: Arminius: Software für Linux-basierte SCI-Cluster Arminius: Software für Linux-basierte SCI-Cluster.
An Axiomatic Proof Technique for Parallel Programs
Terminierung und Deadlocks Enkhbat Daginaa Betreuerin Prof. Heike Wehrheim Totale Korrektheit.
Kapitel 6.1 Nebenläufigkeit und wechselseitiger Ausschluss
Systeme 1 Kapitel 7 Deadlocks WS 2009/10.
Kapitel 7.2 Dining philosophers problem
Ausnahmen HS Merseburg (FH) WS 06/07.
Threads Richard Göbel.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Kapitel 10 Nebenläufigkeit und wechselseitiger Ausschluss
Seminar zum pi-Kalkül betreut von Andreas Rossberg
OpenMP Präsentation im Rahmen des Seminars
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
3.1.7 Korrektheit von Objekten Voraussetzung für die Diskussion der Korrektheit von nichtsequentiell benutzten abstrakten Objekten: Modellbasierte Spezifikation:
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
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.
Vorlesung 9.2: Specification Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
JAVA RMI.
Seminar: Architekturbeschreibungssprachen
Vortrag III Hier in der Vorlesungszeit! Anwesenheitspflicht Jede Gruppe hat 6 Minuten! Stellt eure GUI vor –was ihr besonderes gemacht habt –Spektakuläre.
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Einführung in die Programmierung Klassendefinition und Objekte
Java Threads Sebastian Werler
Entwicklung verteilter eingebetteter Systeme - Einführung
Grundkonzepte Java - Klassendefinition
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Systeme 1 Kapitel 4 Prozesse WS 2009/10.
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Parallel Programming Condition Queues
Prozess-synchronisation
Thread Synchronisation in JAVA
Unterprogramme in JAVA
Betriebssysteme Übung 2. Tutorium. Task 1 – Locks (1) Wozu Locks? Dienen dazu, exklusiven Zugriff auf eine Ressource sicherzustellen Lock = binäre Semaphore.
Objectives Verstehen was unterDelegate verstanden wird
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Interprozess- kommunikation (IPC)
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
Threads in Java Wiederholung der BS Grundlagen Alois Schütte AOSD1.
2. Kommunikation und Synchronisation von Prozessen 2
Muster nebenläufiger Programmierung concurrent Packet von Java Alois Schütte AOSD1.
Parallele Programmierung im.NET Framework Darmstadt, Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Robuste Programme durch Ausnahmebehandlung
Prof. Dr. Alois Schütte Advanced System Programming 1 Das concurrent Paket 1 Überblick 2 Lock 3 Condition 4 Queue 5 Executors.
Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:
93 Das Monitorkonzept (nach Hoare/Brinch-Hansen 1974) Nur ein Prozess bzw. Thread kann zu einem bestimmten Zeitpunkt im Monitor aktiv sein => gegenseitiger.
Objektorientierte (OO) Programmierung
1 VE 11 Kruskal-Realisierung Listen. 2 Auf dem Weg zur Kruskal-Realisierung Vorüberlegungen: Der Graph könnte dargestellt werden als Menge von Knoten,
© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework Von: Simon Lubberich Erstbetreuer:
Der kritische Abschnitt
 Präsentation transkript:

Nebenläufige Programmierung Mina Nikolova

Übersicht Was ist Nebenläufigkeit? Anwendungen Grundlegende Begriffe Problemme Mechanismen zur Synchronisation Programmiersprachen CML Alice Java

Einführung Grosse Systemen fordern Nebenläufigkeit Mehrere Folgen von Aktionen werden gleichzeitig ausgeführt Prozess – sequentielle Ausführung von Aktionen Thread – „light-weight“ Prozess

Nebenläufigkeit Multi-Programmierung Multiprozessor-Programmierung Ein Prozessor führt mehrere Prozesse parallel aus Ein Prozess wird sequentiell ausgeführt Teile eines Pozesses werden zw. Abschnitten anderer Prozesse ausgeführt Multiprozessor-Programmierung Zwei oder mehrere Prozessoren teilen gemeinsamen Speicher oder sind in einem Netzwerk verbunden Prozesse, die auf den verschiedenen Prozessoren ausgeführt werden, können miteinander kommunizieren

Anwendungen Ein Programm arbeitet während ein anderes Programm auf ein Ereignis wartet Window Systeme zeigen parallel verschiedene Fenster auf dem Display Prozesse auf verschiedenen Prozessoren können zusammenarbeiten und Probleme lösen Ein Prozessor kann weiterarbeiten,falls ein anderer Prozessor abstürtzt

Grundlegende Begriffe Kommunikation gemeinsam benutzte Variablen, Datenstrukturen, Dateien Nachrichtenaustausch durch Kommunikationskanäle Kooperation - veranlaßt einen Prozess auf einen anderen zu warten oder signalisiert einem Prozess weiterzuarbeiten Atomarität – atomare Aktion darf nicht während ihrer Ausführung unterbrochen werden

Grundlegende Begriffe (cont.) Kritischer Abschnitt – Abschnitt eines Programms, der lesend oder schreibend gemeinsame Daten verarbeitet procedure sign_up(person) begin number := number + 1; list[number] := person; end; cobegin sign_up(fred); sign_up(bill); coend; kritischer Abschnitt cobegin\coend – Aktionen in diesem Block werden nebenläufig ausgeführt

Probleme Nichtdeterminismus Schwer zu testen ein Programm produziert verschiedene Ausgaben mit derselben Eingabe Schwer zu testen viele mögliche Ausführungen eines Programms nur selten auftretende Fehler Deadlock - ein Prozess kann wegen des Zustandes eines anderen Prozesses nicht mehr arbeiten

Mechanismen zur Synchronisation Semaphore (Edsger W. Dijkstra,1968) schützt gemeinsame Daten.Jeder Prozess benutzt folgende Prozeduren, damit er die Daten benutzen darf : wait Prozedur auf Semaphore s Prozess darf entweder den kA betreten oder wird unterbrochen und in einer Warteschlange eingeordnet signal Prozedur auf Semaphore s Prozess verläßt den kA und erlaubt Prozesse aus der Warteschlange den kA zu betreten Locks Prozess testet eine Lock Variable und wartet, wenn sie gesetzt ist, oder betritt den kA

Mechanismen zur Synchronisation(cont) Monitore (Brinch-Hansen, Dahl, Dijkstra, Hoare) ähneln abstraktem Datentyp, dessen Operationen die Synchronisation sicherstellen private Daten Menge von Prozeduren . . . Eingangswarteschlange P3 P2 P1 MONITOR aktiver Prozess ruft Prozeduren des Monitors auf

Anforderungen an einer Programmiersprache Kontrollstrukturen Threads Kommunikationsabstraktionen synchronisierte Kommunikation gepufferte, asynchrone Kommunikationskanäle, die die Nachrichtenreihenfolge behalten gegenseitiger Ausschluß – nur ein Prozess darf sich zum Zeitpunkt im kA befinden

Programmiersprachen CML Alice Java Erlang MPD ADA Actors Concurrent Pascal Cobegin/coend

Concurrent ML (Reppy, Gansner) Threads CML Prozesse Programm besteht zuerst aus einem Thread spawn : (unit unit) thread_id Kommunikation zw. Threads Kommunikationskanäle synchron, geordnet, ungepuffert channel : unit ´a chan channel() kreiert einen Kanal, der mit Werten vom Typ ´a kommuniziert

Concurrent ML (cont) Operationen auf Kanälen send : (´a chan * ´a) unit receive : ´a chan ´a c = channel(); Beispiel: spawn (fn()=> … <A> … send(c,3); … <B> …); spawn (fn()=> … <C> … recv c; … <D> …); Ergebnis <A> <B> send/receive <C> <D>

Concurrent ML (cont) Events mächtiges Konzept für Nebenläufigkeit verzögerte Aktionen, die der Synchronisation dienen ´a event : Typ einer Aktion, die einen Wert vom Typ ´a liefert, wenn sie ausgeführt wird sync : ´a event ´a - synchronisieren auf einem Event recvEvt : ´a chan ´a event - receive Event fun receive(ch) = sync (recvEvent (ch)); Ein Thread empfängt Werte von einem Kanal durch Synchronisierung auf einem receive Event für diesen Kanal Bsp.:

Concurrent ML (cont) Synchronisierter gemeinsamer Speicher Konzept für koordinierte Zuweisungen von gemeinsam benutzten Speicherzellen Sp Zelle ist anfangs leer Wenn die Zelle schon voll ist, darf ihr kein Thread Werte zuweisen.Wenn sie leer ist,darf nicht mehr gelesen werden leer put 4 voll 4 take

Alice Threads Future mehrere Threads können nebenläufig laufen werden durch spawn kreiert Future kommt als Resultat des spawn Ausdrucks ist ein Platzhalter für das Ergebnis der nebenläufigen Berechnung wird später durch das fertige Resultat ersetzt fun fib (0 | 1) = 1 | fib n = fib (n-1) + fib (n-2) val n = spawn fib 35 val n : int = _future Future n wird als Resultat zurückgegeben inspect n val it : unit = () Zuerst wird _future auf dem Display gezeigt Wenn das Ergebnis fertig ist, wird _future ersetzt

Alice (cont) Data-flow Synchronisation mächtiger Mechanismus für nebenläufige Programmierung Futures werden als Werte übergeben Der Thread, der den Wert der Future fordert, wird blockiert, bis das Ergebnis die Future ersetzt Wenn eine nebenläufige Berechnung eine Exception produziert, „fails“ die Future und wenn sie angefordert wird, liefert die die Exception

Java Threads Kommunikation zw. Threads Objekte der Klasse Thread start : ertsellt einen neuen Thread durch Ausführung der run Methode von JVM interrupt : suspendiert einen Thread und wirfft in ihm eine Exception Kommunikation zw. Threads Zuweisen\Lesen gemeinsamer Variablen Aufrufen von Methoden von gem. Objekten

synchronized (object) { Java (cont) Synchronisation Locks sichern den gegenseitigen Ausschluß bei Nutzung eines Objektes Objekte können synchronisierte Methoden haben Beim Aufruf einer synchronisierten Methode eines Objekts : Der Thread tested das Lock des Objekts, setzt es und führt die Statements aus synchronized (object) { statements } Wenn das Lock schon gesetzt ist, muss er warten bis es wieder verfügbar ist

Java (cont) Wait set Thread termination eine Form von Semaphore für jedes Objekt wait - Thread suspendiert sich notify - Thread „weckt“ anderen Thread notifyAll - „weckt“ alle Threads vom wait set Thread termination join - Methode, die einen Thread darauf warten läßt, daß ein anderer Prozess terminiert,damit der Thread z.B. die Ergebnisse vom Prozess nutzen kann benutzen das Wait set eines Objekts zur Synchronisation

Java (cont) Synchronisierte Methoden , Beispiel (Lea) class LinkedCell { // Lisp-style cons cell containing protected double value; // value and link to next cell protected LinkedCell next; public LinkedCell (double v, LinkedCell t) { value = v; next = t; } public synchronized double getValue() { return value; public synchronized void setValue(double v) { value = v; // assignment not atomic public LinkedCell next() { // no synch needed return next;

Zusammenfassung Nebenläufigkeit CML Alice Java wichtiges Konzept in der Informatik schwer und aufwendig korrekt zu benutzen CML Threads, Events Alice Futures, Data-flow Synchronisation Java Threads,Synchronisation

Literaturhinweisen Mitchell, Concepts in Programming Languages, Cambridge University Press 2003 The Alice Team, The Alice System, Online Manual, 2003 Gert Smolka, Concurrent Constraint Programming Based on Functional Programming. Programming Languages and Systems 1-11, 1998