Fokus: Konzepte und Techniken verteilter Programmierung mit
Schwerpunkt auf ihrer Ausdrückbarkeit und Anwendung in Java, Ada, CSP,
und POSIX
Schlüsselworte: Prozesse und Threads,
nebenläufige Ausführung, gemeinsame Objekte und gegenseitiger Ausschluß,
Monitore und bedingte Ausführung, Verklemmung, Sicherheit und
Lebendigkeitseigenschaften, modellbasierter Entwurf, Kommunikation durch
Nachrichtenaustausch, Architekturen für Nebenläufigkeit, Pipelining,
Cachekohärenz.
Kursbeschreibung: Der Kurs baut auf Prof. de Roever's
Informatik III Vorlesung über das Betriebssystem Xinu auf.
Während INF III sich im Kern damit beschäftigt, wie man eine
ganz bestimmte Auswahl an Synchronisations-, Scheduling-,
Monitor-Primitiven zur Erzeugung, Kommunikation und Synchronisation
nebenläufiger Prozesse implementiert, legt diese Vorlesung den
Schwerpunkt auf Konzepte und Techniken nebenläufiger Programmierung im
allgemeinen, auf ihre unterschiedlichen Anwendungsfelder und verschiedene
zugrundeliegende Modelle.
Der Kurs gliedert sich in folgende Teile: Nebenläufigkeit mit gemeinsamen
Speicher (Teil 1), verteilte Programmierung (Teil 2) und parallele
Programmierung einschließlich die Ausführung identischer Prozesse auf
einem Grid (Teil 3). Für alle 3 Teile befaßt sich die Vorlesung auch mit
der Implementierung dieser Konzepte.
Locks und Barrieren und ihre Implementierung. Beide Konzepte werden
für gegenseitigen Ausschlußund bedingte Synchronisation verwendet.
verschiedene Arten von Semaphoren und ihre Anwendung.
(Verschachtelte) Monitore, illustriert anhand des ”schlafenden
Barbiers”, des Leser-Schreiber-Problems und von Algorithmen für
Disk-Scheduling. Die Algorithmen werden mittels Java's
Thread-Mechanismus ausgedrückt.
synchroner und asynchroner Nachrichtenaustausch.
Koordinationssprachen (Linda).
verteilte Programmierung in Java, insbesonderen Netzwerke und
Sockets anhand eines remote file readers.
Remote procedure calls und Rendez-vous, anhand von
Cachingalgorithmen und verteilten Dateiservern und ihre
Repräsentierung in Java and ADA.
verschiedene Paradigmen für Prozess interaktion, wie z.B.
master/slave, heartbeat, pipeline, cache-coherency, probe-echo,
broadcast, und Algorithmen für replizierte Server.
”scientific computing”, soweit die Zeit erlaubt.
Das Lehrbuch des Kurses ist in der Hauptsache [1];
weiteres Material aus
[2][3].