| Zeile 1: | Zeile 1: | ||
Als '''Interprozesskommunikation''' ('''IPC''', engl. '''inter-process communication''') bezeichnet man den Datenaustausch und die Synchronisation zwischen mehreren Prozessen. Da Prozesse normalerweise in unterschiedlichen Adressräumen laufen und eigene Kopien der Prozessorregister besitzen, kann dieser Datenaustausch so ohne Weiteres nicht über den Hauptspeicher oder die Prozessorregister geschehen. Vor allem in einem [[Kernel|Microkernel]] ist dieser Datenaustausch essentiell, da jeder Treiber ein eigener Prozess ist und natürlich normale Anwendungen mit dem Treiber kommunizieren müssen, um beispielsweise Tastatureingaben zu erhalten oder um vom Dateisystem zu lesen. | Als '''Interprozesskommunikation''' ('''IPC''', engl. '''inter-process communication''') bezeichnet man den Datenaustausch und die Synchronisation zwischen mehreren Prozessen. Da Prozesse normalerweise in unterschiedlichen Adressräumen laufen und eigene Kopien der Prozessorregister besitzen, kann dieser Datenaustausch so ohne Weiteres nicht über den Hauptspeicher oder die Prozessorregister geschehen. Vor allem in einem [[Kernel|Microkernel]] ist dieser Datenaustausch essentiell, da jeder Treiber ein eigener Prozess ist und natürlich normale Anwendungen mit dem Treiber kommunizieren müssen, um beispielsweise Tastatureingaben zu erhalten oder um vom Dateisystem zu lesen. | ||
| − | == Message | + | == Message Passing == |
| + | |||
| + | Beim Message Passing werden Nachrichten direkt zwischen zwei Prozessen versendet. Dies erfolgt meist mit einer Adressierung mithilfer der PID oder einer Portnummer. | ||
== Message Queues == | == Message Queues == | ||
| + | |||
| + | Message Queues sind abgeschottete Nachrichtenräume. Jeder Prozess der einer MessageQueue angehört, kann Nachrichten in sie hinein schreiben oder Nachrichten aus ihr heraus lesen. | ||
== RPC (=Remote procedure call) == | == RPC (=Remote procedure call) == | ||
| + | |||
| + | Bei RPC werden Funktionen zwischen Prozessen geteilt, d.h ein Prozess kann Funktionen zur Verfügung stellen, die dann ein anderer Prozess in Anspruch nimmt. Das RPC-System sollte dabei die Übertragung von Parametern und Rückgabewerten übernehmen. | ||
== Shared-memory == | == Shared-memory == | ||
| Zeile 12: | Zeile 18: | ||
== Pipes == | == Pipes == | ||
| + | |||
| + | Es gibt 2 Arten Pipes, Unbenannte und Benannte.<br /> | ||
| + | Unbenannte Pipes werden normalerweise zur Kommunikation von Vater- zu Kind-Prozess genutzt. Dabei werden die Daten, die von dem Kind-Prozess auf die Ausgabe geschrieben werden, von dem Vater-Prozess als Eingabe gelesen.<br /> | ||
| + | Benannte Pipes sind ein Dateityp. Sie können mittels Fileopen/Fileclose geöffnet und geschlossen werden und mit Fileread/Filewrite kann von ihnen gelesen werden, bzw. auf sie geschrieben werden. | ||
== Semaphore == | == Semaphore == | ||
| + | |||
| + | Semaphore dienen nicht direkt zur Informationsübertragung, sie dienen viel mehr zum Exklusiven Zugriff aus spezielle Resourcen. | ||
== Monitore == | == Monitore == | ||