Nebenl - PowerPoint PPT Presentation

About This Presentation
Title:

Nebenl

Description:

Title: Nebenl ufige Programmierung Author: Mina Nikolova Last modified by: Mina Nikolova Created Date: 3/6/2004 6:44:01 PM Document presentation format – PowerPoint PPT presentation

Number of Views:32
Avg rating:3.0/5.0
Slides: 25
Provided by: MinaNi
Category:
Tags: nebenl

less

Transcript and Presenter's Notes

Title: Nebenl


1
Nebenläufige Programmierung
  • Mina Nikolova

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

3
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

4
Nebenläufigkeit
  • Multi-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

5
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

6
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

7
Grundlegende Begriffe (cont.)
  • Kritischer Abschnitt Abschnitt eines Programms,
    der lesend oder schreibend gemeinsame Daten
    verarbeitet

procedure sign_up(person) begin number
number 1 listnumber person end cobegi
n sign_up(fred) sign_up(bill) coend
kritischer Abschnitt
cobegin\coend Aktionen in diesem Block werden
nebenläufig ausgeführt
8
Probleme
  • Nichtdeterminismus
  • 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

9
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

10
Mechanismen zur Synchronisation(cont)
  • Monitore (Brinch-Hansen, Dahl,
    Dijkstra, Hoare)
  • ähneln abstraktem Datentyp, dessen Operationen
    die Synchronisation sicherstellen
  • private Daten
  • Menge von Prozeduren

. . .
Eingangswarteschlang
e
P3
P2
P1
MONITOR
aktiver Prozess ruft
Prozeduren des Monitors auf
11
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

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

13
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

14
Concurrent ML (cont)
  • Operationen auf Kanälen
  • send (a chan a) unit
  • receive a chan a
  • c channel()

Beispiel
spawn (fn()gt ltAgt send(c,3) ltBgt )
spawn (fn()gt ltCgt recv c ltDgt )
ltAgt
ltBgt
Ergebnis
send/receive
ltCgt
ltDgt
15
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.
16
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
take
4
17
Alice
  • Threads
  • 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
Zuerst wird _future auf dem Display gezeigt Wenn
das Ergebnis fertig ist, wird _future ersetzt
inspect n val it unit ()
18
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

19
Java
  • 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

20
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
21
Java (cont)
  • Wait set
  • 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
22
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

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

24
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
Write a Comment
User Comments (0)
About PowerShow.com