Bei Multitasking-Betriebssystemen spielt die Kommunikation bzw. Synchronisation zwischen
den quasiparallel ablaufenden Prozessen eine herausragende Rolle. Die Gründe dafür sind vielfältig. Zum einen werden größere Softwaresysteme häufig als Systeme mit mehreren kooperierenden Prozessen gestaltet. Diese müssen normalerweise in ihren Abläufen synchronisiert werden. Ferner müssen häufig Daten von einem Prozeß zum anderen transferiert werden. Ein anderer Grund liegt im Problem der kritischen Abschnitte von Prozessen beim Zugriff auf nicht gemeinsam benutzbare Betriebsmittel. Auch hier sind Synchronisationsmethoden erforderlich, die den gegenseitigen Ausschluß gewährleisten (siehe oben: Semaphore). Einige Möglichkeiten der Prozeß-Kommunikation (Interprocess Communication (IPC) sind:
Kommunikation über gemeinsame Speicherbereiche
Prozesse können gemeinsame Datenbereiche, Variablen etc. anlegen und
gemeinsam nutzen.
Kommunikation über gemeinsame Dateien
Prozesse schreiben in Dateien, die von anderen Prozessen gelesen werden.
Kommunikation über Pipes
Dies sind unidirektionale Datenkanäle zwischen zwei Prozessen.
Ein Prozeß schreibt Daten in den Kanal (Anfügen am Ende)
und ein anderer Prozeß liest die Daten in der gleichen Reihenfolge
wieder aus (Entnahme am Anfang). Realisierung im Speicher oder
als Dateien. Lebensdauer in der Regel solange beide Prozesse existieren.
Kommunikation über Signale
Signale sind asynchron auftretende Ereignisse, die eine Unterbrechung bewirken
(--> Software Interrupt). In der Regel zur Kommunikation zwischen BS und
Benutzerprozeß.
Auslösung vom Benutzer (z.B. Tastendruck)
Auslösung durch Programmfehler (z.B. Division durch 0)
Auslösung durch andere Prozesse (z.B. Plattenzugriff
durch BS-Dienstroutine, "Daten sind bereit")
...
Kommunikation über Nachrichten (Botschaften, Messages)
Nachrichten werden vom BS verwaltet. Dieses stellt eine für die beteiligten
Prozesse gemeinsam nutzbare Transportinstanz (z. B. "Mailbox") zur Verfügung.
Auf diese greifen die Prozesse über bestimmte Transport-Funktionen des BS
(Systemaufrufe) zu. Prozeß A sendet z. B. eine Botschaft
an Prozeß B, indem er sie in der Mailbox ablegt (send(message);).
Der Prozeß B holt die Nachricht dann von der Mailbox ab (receive(message);).
Kommunikation über Streams
Streams ermöglichen die Kommunikation über Rechnernetze.
Logisch gesehen haben Streams dieselbe Aufgabe wie die lokalen Pipes.
Kommunikation über Prozedurfernaufrufe (remote procedure call)
Ein Prozeß ruft eine in einem anderen Prozeß angesiedelte Prozedur auf
(also über seine Adreßgrenzen hinweg). Besonders für Client-Server-Beziehungen
geeignet.
Selbst bei sehr einfachen Betriebssystemen ist eine IPC notwendig, da zumindest
eine Kommunikation zwischen einem Prozeß und dem Scheduler möglich sein
muß.