# Interprozesskommunikation (IPC) - Mechanismen und Techniken, die es Prozessen ermöglichen miteinander zu kommunizieren - auf demselben Computer / über ein Netzwerk hinweg - Ist grundsätzlich wichtig, wenn Prozesse - zusammenarbeiten - Daten austauschen - miteinander interagieren - Wahl der Methodik hängt von Anforderung der Anwendung ab - Effizienz - Datenvolumen - Sicherheit - Komplexität ## Synchrone IPC - Prozess, bei dem der Absender eines [Signals](07_Prozesssynchronisation.md#signale)/Nachricht auf eine Bestätigung oder eine Antwort vom Empfänger wartet - stellt sicher, dass - Absender und Empfänger synchronisiert sind - Ereignisse/Aufgaben sind abgeschlossen bevor andere anfangen - ![image_158.png](image_158.png) ## Asynchrone IPC - Prozesse, bei dem der Absender nicht auf sofortige Antwort wartet - Absender setzt Ausführung fort, während Empfänger verarbeitet und ggf. später antwortet - ![image_159.png](image_159.png) ## Mechanismen - [Shared Memory](#shared-memory) - [Dateien](#dateien) - [Message Queues](#message-queues) - Pipes - Promises (Futures) - Sockets - [Semaphoren](07_Prozesssynchronisation.md#semaphores) - [Mutexe](07_Prozesssynchronisation.md#mutex-mutual-exclusion) - Condition Variables - Remote Procedure Call (RPC) ### Shared Memory - ermöglicht mehreren Prozessen auf denselben _physischen Speicherbereich_ zuzugreifen - Austausch von Daten effizient ohne explizite Kommunikation - Speicherbereich wird im RAM erstellt - Kann von beteiligten Systemen gelesen und beschrieben werden - müssen sich selbst koordinieren #### Linux-Systemaufrufe Shared Memory - **shmget** - Segment erzeugen oder auf bestehendes Zugreifen - **shmat** - Segment an anderen Prozess anhängen - **shmdt** - Segment von Prozess lösen/freigeben - **shmctl** - Status eines Segments abfragen/ändern/löschen ### Dateien - Prozesse können auf gemeinsame Dateien zugreifen - Zugriff kann langsamer als andere [IPC-Mechanismen](#mechanismen) sein - Darauf muss man achten: - Zugriffsrechte korrekt setzen um Sicherheit zu gewährleisten - geeignete [Synchronisationsmechanismen](07_Prozesssynchronisation.md#mutex-vs-semaphore) nutzen ## Message Queues