ZHAW-Logo OAPA-Logo TAT-Logo
zurück  
Diplomarbeit 2004 (DA04): Arbeits-Archiv
 
DA Frp 04/1 - Synchronisation paralleler Prozesse mit CSP
Studierende: Patrick Helfenstein, helfepat
  Pius Widmer, widmepiu

Betreuer: Peter T. Früh, frup
  Markus Thaler, tham

Die Entwicklung des Multiprozessing vor einigen Jahrzehnten eroffnete den Programmierern eine Vielzahl neuer Moglichkeiten. Die gleichzeitige Ausfuhrung mehrerer Prozesse von denen jeder widerum mehrere Threads enthalten kann, setzt den Einsatz eines fairen Scheduling Algorithmus voraus. Auch werden die Ressourcen zwischen allen Prozessen geteilt und mussen vom gleichzeitigen Zugriff mehrerer Prozesse geschutzt werden um die Konsistenz der Daten nicht zu gefahrden. Die Ressourcen mussen also vor Gebrauch reserviert werden. Dies bannt zwar die Gefahr inkonsistenter Zustande, fuhrt aber andererseits neue Probleme ein. Prozesse konnen jetzt verhungern oder sich gegenseitig blockieren (Deadlock). Mutex, Semaphore und Monitor sind Konzepte, die entwickelt wurden um kritische Bereiche abzusichern und ermoglichen die Kommunikation der Threads untereinander. Leider konnen Race-Conditions und Deadlocks auch durch deren Anwendung nicht ausgeschlossen werden.

Die Prozessdefinitionssprache Communicating Sequential Processes (CSP) hingegen ermoglicht es Prozesse systematisch auf Deadlocks und andere unerwunschte Eigenschaften hin zu uberprufen. Ein CSP Prozess ist definiert durch sein von aussen sichtbares Verhalten und die Kanale uber die er mit anderen Prozessen kommuniziert. Resourcen sind nicht mehr gemeinsam, Prozesse konnen sich Daten nur uber die gemeinsamen Kanale ubergeben. Prozesse konnen auf verschiedene Wege zu einem neuen, grosseren Prozess zusammengefugt werden. Die Subprozesse eines Systems konnen einzeln ausgewechselt und durch andere Subprozesse ersetzt werden, die das gleiche externe Verhalten aufweisen. Die Einfuhrung von CSP in die OOP Welt ermoglicht es Entwicklern, Programme vor der eigentlichen Implementation auf mogliches Fehlverhalten zu uberprufen. Ahnlich wie bei UML erhalten Entwickler eine gemeinsame Sprache mit deren Hilfe sie komplexe Sachverhalte schnell und unmissverstandlich darstellen konnen.

zurück