9.2 Gründe für IPC
Falls Ihnen der Sinn von IPCs noch nicht ganz klar geworden ist, sollen noch einige Gründe und Begriffe genannt werden, welche Probleme mithilfe der Interprozesskommunikation vermieden werden können:
|
Gleichzeitiger Zugriff – solange alle Prozesse aus einer Datei lesen, besteht kaum eine Gefahr. Sobald aber einer der Prozesse diese Datei verändern will, entstehen so genannte Konkurrenzsituationen (Race Conditions). Diese Probleme können mit Hilfe von Prozesssynchronisation behoben werden. |
|
Zugriffsdisziplinen – Will man vermeiden, dass mehrere User auf die Daten schreiben können, richtet man eine so genannte Warteschlange ein (nach dem Motto »one writer, many readers«). Man richtet dazu zwei Warteschlangen ein, eine für das Lesen und 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 mehrere gleichzeitig lesen dürfen, und eine exklusive Sperre für den Schreiber. Dies verhindert, dass jemand dazwischenfunkt. |
|
Verhungern von Prozessen – Durch ein Einrichten von Zugriffsdisziplinen kann es passieren, dass ein Prozess ewig in der Warteschlange steht 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 so genannte Server-Client-IPCs. Das heißt, man verwendet einen oder mehrere Clients und einen Server. Der Client stellt die Anfrage an den Server, und der Server antwortet. Der oder die Clients müssen nun auf die Antwort des Servers warten, bis sie weitermachen können. Dadurch entsteht eine Flusskontrolle. Natürlich sollte man auch hier bei gleichzeitigem Zugriff eine Prioritätswarteschlange verwenden. |
|
Deadlocks – Klassischer Deadlock: Prozess 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 warten nun auf die Freigabe des jeweils anderen Prozesses und geben derweil ihre eigene Datei nicht frei. Deadlocks können 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. |
Sie sehen schon, eine Menge Probleme, die auftreten können, für die Sie mittels Interprozesskommunikation verantwortlich sind.
|