







|

Interprozesskommunikation (kurz IPC) werden dort eingesetzt wo mindestens
zwei oder mehrere Prozesse miteinander Kommunizieren sollen. Sprich
Daten untereinander austauschen oder parallel bestimmte Arbeiten erledigen.
Einfache Interprozesskommunikationen kann man mit Hilfe von....
...erstellen. Signale haben sie ja bereits im Kapitel zuvor kennen gelernt.
Ü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 Konkurrenzsituationen
(race conditions). Diese Probleme können mit Hilfe von Prozesssyncronisation
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 mehrerer gleichzeitig lesen
dürfen. Und eine exklusive Sperre für den Schreiber. Dies verhindert das
niemand dazwischenfunkt.
- Verhungern von Prozessen
Durch ein Einrichten von Zugriffsdisziplinen kann es passieren, das ein Prozess
ewig in der Warteschlange wartet und dabei nie zum Zuge (schreiben)
kommt. Daher sollte man Prioritäten in der Warteschlange einrichten.
- Flusskontrolle
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 Flusskontrolle. Natürlich sollten man auch hier
eine Prioritätswarteschlange verwenden, bei gleichzeitigem Zugriff.
- Deadlocks
Klassischer Deadlock: Prozeß A greift auf Datei A zu und wartet auf freigabe
von Datei B.
Zur gleichen Zeit greift Prozess B auf Datei B zu und
wartet auf die Freigabe von Datei A.
Beide Prozesse wartet nun auf die Freigabe des jeweils
anderem Prozess und derweil Ihre eigene Datei nicht frei.
Deadlocks könne vermieden werden, wenn man die Ressourcen durchnummeriert und
diese nur in aufsteigender Form anfordert. Ist eine Anforderung nicht erfolgreich
sollten außerdem alle Ressourcen 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.

© 2001,2002 Jürgen Wolf
|