24 Questions
Was passiert, wenn ein Schreib-Ende eines Pipes geschlossen wird?
0 wird vom Pipe zurückgegeben
Wofür wird ein Pipe verwendet?
Für Signalevents, Synchronization und Kommunikation
Was ist ein Bezeichner in SYS V IPC?
Ein Schlüssel für eine IPC-Struktur
Was gibt an, wenn ein Lese-Ende eines Pipes geschlossen wird?
Ein Signal wird an den Prozess gesendet
Wie viele Pipes werden für Synchronization verwendet?
Ein oder zwei Pipes
Was ist ein Ziel von System V IPC?
Zwischen Prozessen zu synchronisieren und zu kommunizieren
Wie kann ein Prozess auf eine Nachricht warten?
Mit einem Pipe
Was ist ein Ziel von IPC-Strukturen?
Zwischen Prozessen zu kommunizieren und zu synchronisieren
Was ist der Rückgabewert der Funktion open, wenn der Pfad existiert und die Datei nicht geöffnet werden kann?
Eine negative Zahl
Was gibt die Funktion read zurück?
Die Anzahl der gelesenen Bytes
Was ermöglicht die Funktion fdopen?
Die Verbindung zwischen Low-Level- und High-Level-IO
Warum braucht man Kennungen (IDs) bei der Kommunikation zwischen nicht verwandten Prozessen?
Um die IPC-Objekte zu identifizieren
Wie kann ein Prozess auf ein existierendes IPC-Objekt zugreifen?
Indem er den Schlüssel des Objekts kennt
Was sind die möglichen Rückgabewerte der Funktion msgrcv?
Ein error-Code oder die Nachricht mit dem Typ type
Wozu wird der Typ in der Funktion msgrcv verwendet?
Um die Priorität der Nachrichten festzulegen
Was passiert, wenn die Queue voll ist und die Funktion msgsnd aufgerufen wird?
Die Funktion msgsnd blockiert, bis die Queue nicht mehr voll ist
Was verhindert die Entstehung von Zombie-Prozessen?
Einbindung von Signalhandlern für SIGCHLD
Was passiert, wenn ein Vaterprozess wait(pid) aufruft und das Kindprozess bereits beendet wurde?
Der Vaterprozess bekommt den Rückgabewert PID des beendeten Kindprozesses
Was ist der Zweck von Signalhandlern?
Um den Prozess zu reagieren, wenn ein Signal empfangen wird
Was ist der Unterschied zwischen Pipes und FIFOS?
Pipes sind nur zwischen Prozessen mit gemeinsamen Vorfahren einrichtbar, während FIFOS zwischen beliebigen Prozessen eingerichtet werden können
Was ist der Zweck der Funktion alarm()?
Um einen Signal nach einer bestimmten Zeit zu senden
Was passiert, wenn ein Vaterprozess waitpid() mit der Option pid == -1 aufruft?
Der Vaterprozess wartet auf den Abbruch eines beliebigen Kindprozesses
Was ist der Unterschied zwischen SIG_IGN und SIG_DFL?
SIG_IGN ignoriert alle Signale, während SIG_DFL die Standardaktion für die meisten Signale ist
Was ist der Zweck der Funktion kill()?
Um einen Signal an einen Prozess mit einer bestimmten PID zu senden
Study Notes
Prozesse und Signalhandling
- Ein Zombie-Prozess entsteht, wenn ein Prozess terminiert und sein Elternprozess nicht auf seinen Exit-Status wartet.
- Ein Signalhandler kann eingerichtet werden, um Signale abzufangen und nicht immer fragen zu müssen, ob ein Signal empfangen wurde.
- SIG_IGN ignoriert Signale, während SIG_DFL die Default-Aktion für die meisten Signale ist, die den Prozess beendet.
- Signale können mit der kill-Funktion an einen Prozess gesendet werden oder mit raise an den eigenen Prozess.
Pipes und Nachrichtenqueuing
- Pipes können nur zwischen Prozessen eingerichtet werden, die einen gemeinsamen Vorfahren haben.
- Pipes sind halbduplex, d.h. Daten können nur in eine Richtung fließen.
- FIFOS können zwischen beliebigen Prozessen eingerichtet werden und sind Voll-Duplex.
- Stream Pipes sind eine Art von FIFOS und bieten eine Verbindung zwischen Low-Level-IO und High-Level-IO.
Dateioperationen
- Die open-Funktion gibt einen Filedeskriptor zurück, der auf eine Datei zeigt.
- Die read-Funktion gibt die Anzahl der gelesenen Bytes zurück und kann 0 oder -1 zurückgeben, je nachdem, ob der Lesezeiger am Dateiende steht oder ein Fehler auftritt.
- Die lseek-Funktion setzt den Lese-/Schreibzeiger einer Datei neu.
- Die fdopen-Funktion gibt einen Filepointer zurück, der auf einen Filedeskriptor zeigt, und ermöglicht die Verwendung von High-Level-IO-Funktionen.
Interprozesskommunikation
- Alle IPC-Objekte außer Pipes können zwischen nicht verwandten Prozessen kommunizieren.
- Eine Kennung wird vom System nach der Erstellung eines IPC-Objekts vergeben und kann von anderen Prozessen verwendet werden, um auf das Objekt zuzugreifen.
Message Queues
- Nachrichten müssen nicht in der Reihenfolge gelesen werden, in der sie gespeichert wurden.
- Durch Angabe eines Typs in msgrcv können Nachrichten "ausgelassen" werden.
- Die flags msgsnd und msgrcv können verwendet werden, um die Warteschlange zu blockieren oder eine Nachricht zu senden.
System V IPC
- System V IPC, auch XSI IPC genannt, bietet IPC-Strukturen für Nachrichtenqueues, Semaphore und gemeinsam genutzte Speichereinheiten.
- Jede Struktur wird durch einen Bezeichner dargestellt, der zurückgegeben wird, wenn die Struktur erstellt wird.
- Ein key muss spezifiziert werden, wenn eine IPC-Struktur erstellt wird, und matching keys verweisen auf matching-Objekte.
Lernen Sie, wie Sie Zombie-Prozesse verhindern, indem Sie Signalhandler für SIGCHLD einrichten, zweimal fork aufrufen und die Funktionen wait() und waitpid() nutzen.
Make Your Own Quizzes and Flashcards
Convert your notes into interactive study material.
Get started for free