Next: 3.2.2.1 Semaphorenkonzept
Up: 3.2 Synchronisation paralleler Prozesse
Previous: 3.2.1 Einige Begriffe
3.2.2 Semaphoren
Ein generelles Problem beim Zugriff auf gemeinsame Ressourcen
ist die Deadlock-Freiheit.
Deadlock :
Verklemmung, mehrere Prozesse warten auf je ein Ereignis
welches aber nur durch einen der wartenden Prozesse ausgelöst werden
kann.
Bsp.: Dinner for five [Dijkstras oder Hoare, 1971]
-
-
Abbildung 3.5:
Dinner for five
 |
''Das Leben der Philosophen besteht aus den sich abwechselnden Tätigkeiten
Denken und Essen. Jeder Philosoph hat seinen
Platz am Tisch.
Ihr einziges Problem - abgesehen von denen philosophischer Natur -
besteht darin, daß die aufgetragene Mahlzeit eine sehr schwierige
Art von Spaghetti ist, zu deren Verzehr man
2 Gabeln benötigt. Neben jedem Teller liegen 2 Gabeln, so
daß grundsätzlich keine Schwierigkeiten auftauchen sollten.
Es hat jedoch zur Folge, daß 2 Nachbarn nicht zur selben Zeit essen
können'' [Rec94]
Die 5 Gabeln stehen hier stellvertretend für knappe Resourcen in einem
großen System.
Lösungsvariante (Handlungsanweisung) 1:
- 1.
- Wenn Du hungrig bist, setzte Dich an an Deinen Platz.
- 2.
- Warte bis links eine Gabel frei ist und ergreife sie.
- 3.
- Warte bis rechts eine Gabel frei ist und ergreife sie.
- 4.
- Gib nach dem Essen beide Gabeln frei !
Deadlock :
Alle Philosophen verhungern mit einer Gabel in ihrer linken Hand.
Lösungsvariante 2:
- 1.
- Wenn Du hungrig bist, setzte Dich an an Deinen Platz.
- 2.
- Warte bis links und rechts die Gabeln frei sind und ergreife sie.
- 3.
- Esse Deine Spaghetti.
- 4.
- Gib nach dem Essen beide Gabeln frei !
''Deadlock für alle'' ist ausgeschlossen, aber
dem Einzelnen kann der Hungertod drohen
(z.B. für Philosoph Nr.1, wenn sich Nr.0 und Nr.2 leicht überlappend
beim Essen abwechseln).
Dijkstras Vorschlag : Einführung von Semaphoren
(Semaphore ist ein Signal bei der holländischen Eisenbahn).
Semaphor :
Signal welches von einzelnen Prozessen betätigt wird und nicht von einer
Zentralinstanz (Abb. 3.6).
Der Prozeß [Zug] wartet, wenn das Signal auf '' WAIT'' [Rot] steht.
Ansonsten ist der Zugriff [Einfahrt] auf den kritischen Bereich
[Fahrtstrecke] frei und der Prozeß [Zug] stellt das Signal auf
'' WAIT'' [Rot] für alle anderen Prozesse [Züge].
Abbildung 3.6:
Freigabe einer Semaphore
 |
- Shared Memory
Semaphorenkonzept
- Distributed Memory
Message-Passing Modell
Kommunikation
Next: 3.2.2.1 Semaphorenkonzept
Up: 3.2 Synchronisation paralleler Prozesse
Previous: 3.2.1 Einige Begriffe
Gundolf Haase
1998-12-22