|
![ein Kapitel weiter](../weiter.gif)
Interprozeßkommunikation (kurz IPC) werden dort eingesetzt wo mindestens
zwei oder mehrere Prozesse miteinander Kommunizieren sollen. Sprich
Daten untereinander austauschen oder parallel bestimmte Arbeiten erledigen.
Einfache Interprozeßkommunikationen kann man mit Hilfe von....
...erstellen. Signale haben sie ja bereits im Kapitel zuvor kennengelernt.
Über die Pipes werden sie auch am meisten erfahren. Daneben existieren
noch komplexe IPC wie......
- Nachrichten-Warteschlangen (Message-Queues)
- Semaphore
- gemeinsamer Speicherbereich (Shared Memory)
Wenn mehrere Prozesse gemeinsam auf Daten zugreifen kann es sehr schnell
chaotisch werden. Daher sollen Probleme nicht unerwähnt bleiben,
die es gilt mit Hilfe von IPC zu vermeiden. Beispielsweise....
- Gleichzeitiger Zugriff
Solange alle Prozesse aus eine Datei lesen ist es nicht so schlimm. Sobald
aber einer diese Datei verändern will, entstehen sogenannte Konkurenzsituationen
(race conditions). Diese Probleme können mit Hilfe von Prozeßsyncronisation
behoben werden.
- Zugriffsdisziplinen
Will man vermeiden das mehrer User auf die Daten schreiben können, richtet
man eine sogenannte Warteschlange ein (nach dem Motto one writers, many readers).
Man richtet dazu 2 Warteschlangen ein, ein für das Lesen eine andere für das
Schreiben. Diese Zugriffsdisziplin kann man aber auch mit Hilfe von Sperren erreichen.
Eine gemeinsame Sperre für die Leser, da ja meherer gleichzeitig lesen
dürfen. Und eine exclusive Sperre für den Schreiber. Dies verhindert das
niemand dazwischenfunkt.
- Verhungern von Prozessen
Durch ein Einrichten von Zugriffsdisziplinen kann es passieren, das ein
Prozeß ewig in der Warteschlange wartet und dabei nie zum Zuge (schreiben)
kommt. Daher sollte man Prioritäten in der Warteschlange einrichten.
- Flußkontrolle
Da man nicht genau sagen kann welcher von den Prozessen seine Daten
zuerst an den Zielrechner schickt und wieder zurück, verwendet man
ein sogenanntes Server-Client-IPC. Das heißt man verwendet eine oder
mehrere Clienten und einen Server. Der Client stellt die Anfrage an
den Server und der Server antwortet. Der oder die Clienten müssen
nun auf die Antwort des Servers warten bis sie weitermachen können.
Dadurch entsteht ein Flußkontrolle. Natürlich sollten man auch hier
eine Prioritätswarteschlange verwenden, bei gleichzeitigem Zugriff.
- Deadlocks
Klassischer Deadlock: Prozeß A greift auf Datei A zu und waret auf freigabe
von Datei B.
Zur gleichen Zeit greift Prozeß B auf Datei B zu und
wartet auf die freigabe von Datei A.
Beide Prozesse wartet nun auf die freigabe des jeweils
anderem Prozeß und derweil Ihre eigene Datei nicht frei.
Deadlocks könne vermieden werden, wenn man die Resourcen durchnummeriert und
diese nur in aufsteigender Form anfordert. Ist eine Anforderung nicht erfolgreich
sollten außerdem alle Resourcen sofort wieder freigegeben werden.
Dies war nun ein kurzer Einblick in die sehr Umfangreiche Welt der IPC. Diese
einzelnen Probleme die hier geschildert wurden gilt es nun in der Praxis zu
erkunden.
![ein Kapitel weiter](../weiter.gif)
© 2001,2002 Jürgen Wolf
|