IPC Inter Process Communicatoin 2 Flashcards
Was sind Message Queues?
Message Queues ermöglichen den asynchronen Nachrichtenaustausch zwischen Prozessen, ähnlich wie das Versenden von Mails in einer Mailbox.
Wie funktioniert das Senden einer Nachricht in einer Message Queue?
Mit der Funktion mq_send()
wird eine Nachricht an eine Message Queue gesendet. Die Nachricht wird in der Queue eingereiht.
Wie funktioniert das Empfangen einer Nachricht aus einer Message Queue?
Mit der Funktion mq_receive()
wird die älteste Nachricht mit der höchsten Priorität aus der Message Queue entnommen.
Wie werden Message Queues in POSIX erzeugt?
Message Queues werden mit mq_open()
erzeugt oder geöffnet. Der Name muss mit einem Slash beginnen, gefolgt von einem eindeutigen Namen.
Was ist die Priorität einer Nachricht in Message Queues?
Jede Nachricht in einer Message Queue hat eine Priorität. Nachrichten mit höheren Prioritäten werden vor Nachrichten mit niedrigeren Prioritäten in die Queue eingeordnet.
Was passiert, wenn eine Message Queue voll ist?
Wenn eine Message Queue voll ist, blockiert der sendende Prozess, bis Platz in der Queue frei wird.
Was ist Shared Memory?
Shared Memory ermöglicht es mehreren Prozessen, einen gemeinsamen Speicherbereich zu nutzen, um Daten effizient auszutauschen.
Wie wird ein Shared-Memory Segment erstellt?
Ein Shared-Memory Segment wird mit der Funktion shm_open()
erstellt oder geöffnet. Der Name des Segments muss mit einem Slash beginnen.
Wie wird ein Shared-Memory Segment in den virtuellen Adressraum eines Prozesses eingebunden?
Mit der Funktion mmap()
wird das Shared-Memory Segment in den virtuellen Adressraum eines Prozesses eingebunden.
Wie wird die Größe eines Shared-Memory Segments festgelegt?
Die Größe eines Shared-Memory Segments wird mit ftruncate()
festgelegt. Die Größe ist immer ein Vielfaches der Seitengröße (meistens 4096 Bytes).
Wie funktioniert das Löschen eines Shared-Memory Segments?
Mit der Funktion shm_unlink()
wird ein Shared-Memory Segment gelöscht. Es wird aus dem Dateisystem entfernt, bleibt aber so lange erhalten, bis alle Prozesse den Deskriptor geschlossen haben.
Wie werden Mutexe und Zustandsvariablen in Shared-Memory verwendet?
Mutexe und Zustandsvariablen müssen in einem Shared-Memory Segment gespeichert werden, damit mehrere Prozesse sie nutzen können. Das process-shared
Attribut muss gesetzt werden.
Was ist ein Beispiel für das Schreiben in ein Shared-Memory Segment?
Ein Shared-Memory Segment wird mit shm_open()
erstellt, die Größe mit ftruncate()
festgelegt, und es wird mit mmap()
eingebunden. Daten werden dann in den Speicher geschrieben.
Was ist ein Beispiel für das Lesen aus einem Shared-Memory Segment?
Ein Shared-Memory Segment wird mit shm_open()
geöffnet, mit mmap()
eingebunden und dann wird der Inhalt des Shared-Memory ausgelesen.
Was ist eine Named Semaphore in der Interprozesskommunikation?
Eine Named Semaphore ist eine Semaphore, die von mehreren Prozessen genutzt werden kann, um den Zugriff auf gemeinsam genutzte Ressourcen wie Shared Memory zu synchronisieren.