Folien, Demo-Programme, Petrinetze; dunklere Felder enthalten zusätzliche/ergänzende Materialien zu dem in der Vorlesung behandelten; Die dunkelblaue Zeile zeigt den aktuellen Vorlesungsstand an. Materialien oberhalb dieser Zeile sind freigegeben, Materialien unterhalb dieser Zeile sind unverbindliche Vorinformationen.
(1) Einführung, Motivation | dependability engineering of reactive systems.pdf (9 p.) | (1) reactive systems - DEMO production cell -> sun pool (2) reactive systems - DEMO concurrent pushers (3) embedded systems - DEMO Cruise Control (4) concurrent systems - DEMO competing sorting | |
intro (M&K).pdf 4up version.pdf | |||
(2) Einführung Petrinetze | modelling with Petri nets.pdf (8 p.) analysis with Petri nets..pdf (7 p.) | snoopy examples (used in the slides) |
(3) Grundlegende Prozeßkonzepte
(3.1) Prozesse und Threads
how to create threads (M&K)pdf 4up version.pdf
Petri nets for ThreadDemo[i].pdf
Concurrency in Java
ThreadDemo1.java ThreadDemo2.java ThreadDemo3.java
threadDemo1-2.spped
threadDemo3.spped
how to create threads with GUI (M&K).pdf 4up version.pdf stand alone version of ThreadDemo example by Magee&Kramer ThreadDemoGui.java ThreadPanel.java
(3.2) Wechselwirkungen zwischen Prozessen
Botanical Garden (M&K).pdf 4up version.pdf
Petri nets for GardenTui.java.pdf
(1) Java GardenTui.java
(2) JavaFC
Counter.javaFC Turnstile.javaFC TurnstileMain.javaFC garden.spped
garden.ctl (3.3) Semaphore als ADT
semaphore implementation in Java (M&K).pdf 4up_version.pdf Semaphore.java BinSemaphore.java
SemaDemo.java DisplaySemaphore.java
Garden: Counter.javaFC Turnstile.javaFC TurnstileMain.javaFC
(3.4) Sperrsynchronisation (Konkurrenz)
mutex pattern, analysis.pdf 2up version.pdf (10 p.) no synchronization: MutexDemo.javaFC MutexLoop.javaFC
Semaphore:
MutexDemo.javaFC MutexLoop.javaFC mutex.spped
dining phils.pdf 2up version.pdf
stubborn set reduction.pdf
2up version.pdf Deadlock.java
DEMO phils DEMO phils, fixed
phil_slide.spped
phil5.spped phil15.spped pphil2.spped deadlock.spped
system deadlocks (M&K).pdf 4up version.pdf philosophers demo (M&K).zip
(3.5) Ereignissynchronisation (Kooperation) structural properties.sld2.pdf production cell.sld2.pdf
Temporale Logik
informal introduction.sld2.pdf
concurrent pushers.sld2.pdf
client/server pattern, selective wait
the problem is choice.sld2.pdf printer system.spped
printer system1.spped printer system2.spped (4) Kompakte Konstrukte
(5) Zusammenfassung
software2pn - an overview.sld2.pdf
(6) Java 5.0
tutorial "concurrency in JDK 5.0"
Going atomic
Beispiele zu [Nowak 2005]
anstelle eines Schlusswortes
"Thread-safe code is code that will work even if many Threads are executing it simultaneously. Writing it is a black art. It is extremely difficult to debug since you can’t reproduce all possible interactions between Threads. You have to do it by logic. In a computer, something that happens only one in a billion times must be dealt with because on average it will happen once a second. To write code that will run stably for weeks takes extreme paranoia. "