« »

Prozesserzeugung

a)

Level 1: Wissen

Der folgende C-Code wird auf einem Unix-System ausgeführt.

pid_t pid1, pid2;
pid1 = fork();
pid2 = fork();

if (pid1>0 && pid2==0) {
    if (fork()) {
        fork();
    }
}

Gehen Sie davon aus, dass alle fork-Systemaufrufe erfolgreich sind. Geben Sie die Gesamtzahl der Prozesse (einschließlich des initial erstellten Prozesses) an, die bei der Ausführung dieses Codes entstehen.

Hinweis: Für die Aufgabenstellung irrelevante Codeteile wurden weggelassen und können als korrekt angenommen werden.

Diese Aufgabe war Teil der Klausur im Sommersemester 2024 (Probeklausur).

Lösung

Es entstehen insgesamt 6 Prozesse.

Zur Veranschaulichung

Der nachfolgende Graph visualisiert das Starten neuer Prozesse. Die bunten Kreise über den Zeilenzahlen markieren den jeweiligen Programmzähler. Dieser stoppt bei fork-Aufrufen sowie am Ende des Programms. Programmzähler desselben Prozesses haben die selbe Farbe. Für die Beantwortung der Fragestellung sind die Blattknoten maßgeblich: PID 0 (blau), PID 2 (grün), PID 5 (hellrot), PID 4 (orange), PID 1 (lila) und PID 3 (dunkelrot).

Lernziele

In dieser Aufgabe …

  • wiederholen die Studierenden die Simulation von fork-Aufrufen.