Verhindern von Zombie-Prozessen

ExuberantAloe avatar
ExuberantAloe
·
·
Download

Start Quiz

Study Flashcards

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
Use Quizgecko on...
Browser
Browser