Nichtsequentielle Programmierung

WS98/99



  • Vorlesung
    Termin : DI 12-14
    Ort: HS
    Beginn : 20.10.
  • Übung A
    Termin : MI 14-16
    Ort: Raum 005
    Beginn : 21.10.
  • Übung B
    Termin : DO 18-20
    Ort: Raum 039
    Beginn : 22.10.


Inhalt

Nichtsequentielle Programmierung befaßt sich mit den Datenstrukturen und Algorithmen zur Synchronisation nebenläufiger Prozesse, die auf gemeinsame Daten zugreifen oder miteinander kommunizieren.

Die Vorlesung stellt grundlegende Konzepte und Methoden der Programmierung nebenläufiger und verteilter Systeme im Zusammenhang dar.

Die in der Vorlesung behandelten Konzepte werden in der Programmiersprache Pascal-FC eingeübt. Außerdem wird Nebenläufiges Programmieren in Java vorgestellt.





Neuerscheinung Februar 1999 im Springer-Verlag
Christian Maurer
Grundzüge der
Nichtsequentiellen Programmierung






NSP - Zeitplan


Vorlesung Tutorium
20.10. Begriffserklärungen, Motivation, Nebenläufigkeit, Konflikte beim Zugriff auf gemeinsame Variable, kritische Abschnitte und gegenseitger Ausschluß Grundbegriffe
Anwendungsbeipiele

PASCAL-FC - Grundlagen
I.
27.10. Schloßvariable, Einsatz von Maschinenbefehle; Schloßalgorithmen Synchronisation
Kritische Abschnitte
Maschinenbefehle
II.
03.11. Algorithmen von Peterson und Dekker einfache Schloßalgorithmen
Fairneß-Betrachtungen
III.
10.11. Schloßalgorithmen für mehrere Prozesse (Tiebraker,Dijkstra,Habermann,Ticket,Bakery); dynamisches Prozeßmodell, Prozeßzustände und -übergänge JAVA - Threads
Nebenläufigkeit und OO
UML-Interaktionsdiagrammme
IV.
17.11. Spezifikation und Implementierung einer Prozeßverwaltung; Einführung in das Semaphorkonzept, binäre Semaphore Prozeß-Modell
  • Software-seitig : MODULA2
  • RTSS-seitig : PASCAL-FC
  • Betriebssystem-seitig : UNIX
  • V.
    24.11. allgemeine Semaphore, beschränkter Puffer Koroutinen, geräteabhängige Prozesse und Monitore in MODULA2; Implementierung eines Prozeßmoduls VI.
    01.12 unbeschränkter Puffer (schlafender Barbier), Konstruktion allgemeiner Semaphore aus binären, Leser-Schreiber-Problem UNIX-Prozesse
    Konzept, Strukur, Signale
    VII.
    08.12. Staffelstabalgorithmus, speisende Philosophen, additive Semaphore Lösungen klassischer Probleme
    mit Semaphoren
    VIII.
    15.12 Barrierensynchronisation, Implementierung von Semaphoren im Prozeßkern, Fairneß, Verklemmungsbegriff IX.
    1999
    05.01. Ausschluß, Erkennung und Vermeidung von Verklemmungen, Gegenmaßnahmen, Ansatz des Bankiers-Algorithmus Referat: Semaphore in UNIX
    Wiederholung : inhärent nichtsequentielle Algorithmen
    Petri-Netze
    X.
    12.01. Bankiers-Algorithmus, Wertung der Maßnahmen gegen Verklemmungen; Einführung in das Monitorkonzept, Bedingungsvariable, Monitorlösungen diverser Beispiele Fairneß
    Verklemmungen
    Bankiers-Algorithmus
    XI.
    19.01. Leser und Schreiber mit Monitor, Signalsemantiken, Prioritätsregelungen Lösungen klassischer Probleme mit Monitoren
    Synchronizing JAVA-Threads
    XII.
    26.01. Rundruf, Implementierungen des Monitorkonzeptes mit Semaphoren, geschachtelte Monitore; synchroner Botschaftenaustausch, Netzwerke von Filtern, selektives und bewachtes selektives Warten, Anwendungen Synchronizing JAVA-Threads
  • Critical Regions
  • Monitore
  • Reentranz
  • Signalsemantik
  • geschachtelte Monitoraufrufe
  • XIII.
    02.02. Äquivalenz von Botschaften- und Semaphorkonzept; Kunden-Anbieter-Paradigma mit diversen Beispielen, Dualität Monitorkonzept-Botschaftenaustausch XIV.
    09.02 Fernaurufe, diverse klassische Anwendungen, Dualität Monitorkonzept-Fernaufrufe, Prozedurfernaufrufe OCCAM-Rendezvous
    ADA-Rendezvous
    Rendezvous in PASCAL-FC
    XV.
    16.02. Vergleich der Sprachkonzepte; Ressourcen in Pascal-FC Zusammenfassung XVI.



    Beiträge von
    NSP-Teilnehmern



    Teilnehmer
    Mail an Gruppe A
    Mail an Gruppe B
    Mail an Alle


    Arbeitsmaterial


    Literatur

    7.Übungsblatt:

    Die Speisenden Philosophen:

    Programmiersprache PASCAL-FC:

    Programmiersprache Java:

    Programmiersprache SR :

    Programmiersprache ADA :