59 lines
2.2 KiB
Markdown
59 lines
2.2 KiB
Markdown
# 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
|
|
- 
|
|
|
|
## 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
|
|
- 
|
|
|
|
## 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
|