12 Stimmen

Wie kommunizieren Programme miteinander?

Wie kommunizieren Prozesse miteinander? Mit allem, was ich bisher beim Programmieren gelernt habe, kann ich nicht erklären, wie Sockets, Dateisysteme und andere Dinge, die mit dem Senden von Nachrichten zwischen Programmen zu tun haben, funktionieren.

Übrigens, ich benutze ein auf Linux basierendes Betriebssystem, falls du etwas Betriebssystem-spezifisches hinzufügen möchtest. Danke im Voraus. Diese Frage beschäftigt mich schon seit Ewigkeiten. Ich vermute auch, dass der Kernel damit etwas zu tun hat.

18voto

Adam Zalcman Punkte 25712

Bei den meisten IPC (InterProcess Communication)-Mechanismen lautet die generelle Antwort auf Ihre Frage: Prozess A ruft den Kernel auf und übergibt einen Zeiger auf einen Puffer mit Daten, die an Prozess B übertragen werden sollen. Prozess B ruft den Kernel auf (oder ist bereits bei einem Aufruf an den Kernel blockiert) und übergibt einen Zeiger auf einen Puffer, der mit Daten von Prozess A gefüllt werden soll.

Diese allgemeine Beschreibung gilt für Sockets, Pipes, System V Message Queues, normale Dateien usw. Wie Sie sehen können, ist der Kommunikationsaufwand hoch, da mindestens ein Kontextwechsel erforderlich ist.

Signale stellen einen asynchronen IPC-Mechanismus dar, bei dem ein Prozess eine einfache Benachrichtigung an einen anderen Prozess senden kann, die einen vom zweiten Prozess registrierten Handler auslöst (alternativ kann der Prozess nichts tun, anhalten oder den Prozess beenden, wenn kein Handler registriert ist, je nach Signal).

Zur Übertragung großer Datenmengen kann man System V Shared Memory verwenden, bei dem zwei Prozesse auf denselben Teil des Hauptspeichers zugreifen können. Beachten Sie jedoch, dass auch in diesem Fall ein Synchronisationsmechanismus wie System V Semaphores benötigt wird, was ebenfalls zu Kontextwechseln führt.

Deshalb ist es ratsam, wenn Prozesse oft kommunizieren müssen, sie zu Threads in einem einzigen Prozess zu machen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X