Interprozesskommunikation - Übersicht
Inter Process Communication (IPC) ist ein Mechanismus, bei dem ein Prozess mit einem anderen Prozess kommuniziert wird. Dies tritt normalerweise nur in einem System auf.
Es gibt zwei Arten der Kommunikation:
Zwischen verwandten Prozessen, die nur von einem Prozess initiiert werden, z. B. übergeordneten und untergeordneten Prozessen.
Zwischen nicht verwandten Prozessen oder zwei oder mehr verschiedenen Prozessen.
Im Folgenden finden Sie einige wichtige Begriffe, die wir kennen müssen, bevor wir mit diesem Thema fortfahren können.
Pipes- Kommunikation zwischen zwei verwandten Prozessen. Der Mechanismus ist Halbduplex, was bedeutet, dass der erste Prozess mit dem zweiten Prozess kommuniziert. Um einen Vollduplex zu erreichen, dh damit der zweite Prozess mit dem ersten Prozess kommuniziert, ist eine andere Leitung erforderlich.
FIFO- Kommunikation zwischen zwei unabhängigen Prozessen. FIFO ist ein Vollduplex, dh der erste Prozess kann gleichzeitig mit dem zweiten Prozess kommunizieren und umgekehrt.
Message Queues- Kommunikation zwischen zwei oder mehr Prozessen mit voller Duplexkapazität. Die Prozesse kommunizieren miteinander, indem sie eine Nachricht veröffentlichen und aus der Warteschlange abrufen. Nach dem Abrufen ist die Nachricht nicht mehr in der Warteschlange verfügbar.
Shared Memory- Die Kommunikation zwischen zwei oder mehr Prozessen wird durch ein gemeinsames Gedächtnis aller Prozesse erreicht. Der gemeinsam genutzte Speicher muss durch Synchronisieren des Zugriffs auf alle Prozesse voreinander geschützt werden.
Semaphores- Semaphore dienen zum Synchronisieren des Zugriffs auf mehrere Prozesse. Wenn ein Prozess auf den Speicher zugreifen möchte (zum Lesen oder Schreiben), muss er gesperrt (oder geschützt) und freigegeben werden, wenn der Zugriff entfernt wird. Dies muss von allen Prozessen wiederholt werden, um Daten zu sichern.
Signals- Signal ist ein Mechanismus zur Kommunikation zwischen mehreren Prozessen über Signalisierung. Dies bedeutet, dass ein Quellprozess ein Signal (erkannt durch die Nummer) sendet und der Zielprozess es entsprechend behandelt.
Note - Fast alle Programme in diesem Tutorial basieren auf Systemaufrufen unter Linux Operating System (ausgeführt in Ubuntu).