In natürlichen Systemen laufen viele Prozesse selbstverständlich parallel (d. h. gleichzeitig) ab - das Gehirn kann beispielsweise problemlos gleichzeitig optische und akustische Reize verarbeiten. Da auch viele technische Systeme sich in unabhängige Komponenten gliedern lassen, liegt ein Übertragen der „parallelen Denkweise“ z. B. auf komplexe Programmsysteme nahe. Leider ergeben sich dabei immer wieder erhebliche Probleme.
Durch das Unterschätzen der Komplexität und die Wahl ungeeigneter Programmiermodelle treten dann in der Praxis sogenannte Verklemmungen des Systems auf oder es ergeben sich ungewollte Systemzustände (sogen. Race Hazards), die zu inkonsistenten Daten führen können. Spektakuläre Beispiele dafür sind das Versagen medizinischer Bestrahlungsgeräte (Therac-25 in den 80-er Jahren) oder des Mars Rover (90-er Jahre), bei denen das Zusammenspiel parallel ablaufender Systemteile nicht wie gewünscht funktionierte.
In dieser Vorlesung sollen Grundlagen der Parallelverarbeitung vermittelt werden. Mithilfe eines einfachen Zustandsmodells wird das Verhalten paralleler Systeme zunächst abstrakt beschrieben, um damit notwendige Eigenschaften der Systeme einfach nachweisen zu können. Die konkrete Umsetzung der Modelle in der Programmiersprache Java erlaubt anschließend die praktische Anwendung der theoretischen Konzepte.
Ziel der Vorlesung ist es, das Bewusstsein für Fehlerquellen beim Einsatz von Parallelverarbeitung zu schärfen und den praktischen Umgang mit parallelen Java-Programmen zu trainieren. Anschließend sollen die Teilnehmer in der Lage sein, mögliche Probleme beim Zusammenspiel gleichzeitig ablaufender Programmteile zu erkennen sowie Maßnahmen zum Vermeiden oder Lösen der Probleme zu beherrschen.
- 6 CP
- Vorlesung + Übungen 4 SWS
