ein Kapitel zurück                                           ein Kapitel weiter

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....

  • Signalen
  • Pipes

...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 zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf