2. Interprozesskommunikation

In Zeiten, in denen Rechnersysteme isoliert und nicht vernetzt betrieben wurden, beschränkte sich die Interprozesskommunikation auf Mechanismen des gemeinsamen Zugriffs auf Variablen in einem von mehreren Prozessen gemeinsamen genutzten Speicherbereich. Um Kollisionen beim gleichzeitigen Schreiben von Variablen zu verhindern, wurden beispielsweise Semaphoren eingesetzt. Eine Semaphore funktioniert ähnlich wie ein Staffelstab: Nur der Prozess, der den Staffelstab besitzt, darf auf den gemeinsamen Datenbereich zugreifen.

Eine andere Möglichkeit besteht darin FIFO (engl. First-In-First-Out)-Speicher oder Pipes (deutsch Rohre) zu verwenden: ein Prozess schreibt Daten in einen FIFO (oder eine Pipe), die der Empfängerprozess liest. Auf FIFOs- und Pipes wird mittels File-Deskriptoren zugegriffen und FIFOs oder Pipes können deshalb als Dateien verstanden werden. Pro Übertragungsrichtung muss ein FIFO oder eine Pipe verwendet werden. Hierdurch wird das gleichzeitige Schreiben von Daten verhindert. Allerdings muss aufgepasst werden, dass der FIFO oder die Pipe nicht überläuft, was zu Datenverlusten führt. Da die Datenübertragung über systeminterne Bussysteme als nahezu fehlerfrei angesehen werden kann, existiert kein Fehlerschutzmechanismus oder nur rudimentäre Mechanismen wie etwa die Berechnung der binären Quersumme über die zu übertragenen Daten.

Mit der Einführung vernetzter Rechnersysteme bestand das Bedürfnis mit Prozessen in unterschiedlichen Rechnersystemen zu kommunizieren. Allerdings führte dies zu Problemen: Im Gegensatz zur Interprozesskommunikation in lokalen Rechnersystemen, kann die Datenkommunikation nicht mehr als fehlerfrei angesehen werden. Im Gegenteil, Datenfehler sind nicht mehr die Ausnahme, sondern die Regel. Dies wiederum führt dazu, dass komplexe Protokolle zur Rechnerkommunikation entwickelt wurden. Die Interprozesskommunikation und eine Schnittstelle, die Funktionen der Interprozesskommunikation nutzbar macht, sollte deshalb folgende Randbedingungen erfüllen: