05_ipc-part2_slides_Z Flashcards
Was sind die zwei Hauptarten der Interprozesskommunikation (IPC)?
Die zwei Hauptarten der Interprozesskommunikation (IPC) sind nachrichtenbasierte Kommunikation und speicherbasierte Kommunikation.
Was sind Message Queues und wofür werden sie verwendet?
Message Queues dienen dem asynchronen Nachrichtenaustausch zwischen Prozessen. Sie ermöglichen es mehreren Prozessen, gleichzeitig Nachrichten zu senden und zu empfangen, wobei jede Nachricht nur von einem Prozess empfangen wird.
Welche Funktion wird verwendet, um eine Message Queue zu erzeugen oder zu öffnen und welche Parameter sind notwendig?
Die Funktion mq_open
wird verwendet, um eine Message Queue zu erzeugen oder zu öffnen. Notwendige Parameter sind: - name
: Name der Queue, muss mit einem Slash beginnen. - oflag
: Flags wie O_CREAT
und O_RDWR
, die das Verhalten der Queue steuern. - Optional: mode
: Berechtigungen, z.B. 0666 für Lese- und Schreibrechte. - Optional: attr
: Struktur zur Anpassung der maximalen Nachrichtengröße und Queue-Länge.
Wie sendet man eine Nachricht in eine Message Queue und welche Parameter sind dabei erforderlich?
Um eine Nachricht in eine Message Queue zu senden, wird die Funktion mq_send
verwendet. Erforderliche Parameter sind: - mqdes
: Deskriptor der Message Queue. - msg_ptr
: Zeiger auf die Nachricht. - msg_len
: Länge der Nachricht. - msg_prio
: Priorität der Nachricht.
Wie empfängt man eine Nachricht aus einer Message Queue und welche Parameter sind dabei erforderlich?
Um eine Nachricht aus einer Message Queue zu empfangen, wird die Funktion mq_receive
verwendet. Erforderliche Parameter sind: - mqdes
: Deskriptor der Message Queue. - msg_ptr
: Zeiger auf den Puffer, in den die Nachricht gelesen wird. - msg_len
: Größe des Puffers, mindestens so groß wie die maximale Nachrichtengröße. - msg_prio
: Zeiger auf eine Variable, in der die Priorität der empfangenen Nachricht gespeichert wird.
Welche Funktionen werden verwendet, um eine Message Queue zu schließen und zu löschen?
Die Funktion mq_close
wird verwendet, um eine Message Queue zu schließen, und mq_unlink
, um eine Message Queue zu löschen.
Was ist Shared Memory und wie wird es zur Interprozesskommunikation verwendet?
Shared Memory (gemeinsamer Speicher) ist ein Bereich im Hauptspeicher, der von mehreren Prozessen gemeinsam genutzt wird. Es ermöglicht eine schnelle Kommunikation, da Daten direkt im Speicher ausgetauscht werden, ohne dass ein Nachrichtenaustausch erforderlich ist.
Welche Schritte sind notwendig, um ein Shared-Memory Segment zu erstellen und zu verwenden?
Die Schritte zur Erstellung und Verwendung eines Shared-Memory Segments sind: 1. Erzeugen eines Shared-Memory Objekts mit shm_open
. 2. Konfigurieren der Größe des Segments mit ftruncate
. 3. Einhängen des Segments in den virtuellen Adressraum mit mmap
.
Welche Funktion wird verwendet, um die Größe eines Shared-Memory Segments zu konfigurieren?
Die Funktion ftruncate
wird verwendet, um die Größe eines Shared-Memory Segments zu konfigurieren.
Wie wird ein Shared-Memory Segment in den virtuellen Adressraum eines Prozesses eingebunden?
Ein Shared-Memory Segment wird mit der Funktion mmap
in den virtuellen Adressraum eines Prozesses eingebunden.
Welche Funktion wird verwendet, um ein Shared-Memory Segment zu löschen?
Die Funktion shm_unlink
wird verwendet, um ein Shared-Memory Segment zu löschen.
Was sind Mutexe und Zustandsvariablen im Kontext von Shared Memory und warum sind sie wichtig?
Mutexe (Mutual Exclusion Locks) und Zustandsvariablen (Condition Variables) sind Synchronisationsmechanismen, die im Shared Memory eingesetzt werden, um den Zugriff auf gemeinsam genutzte Ressourcen zu koordinieren und Race Conditions zu vermeiden.
Was bedeutet es, dass das process-shared
Attribut gesetzt sein muss bei Mutexen und Zustandsvariablen im Shared Memory?
Das process-shared
Attribut muss gesetzt sein, damit die Mutexe und Zustandsvariablen von mehreren Prozessen, die das Shared Memory nutzen, gemeinsam verwendet werden können. Dies ermöglicht eine korrekte Synchronisation zwischen den Prozessen.