Lernziele
In dieser Aufgabe …
- vertiefen die Studierenden durch Simulation ihr Verständnis des Systemaufrufs
fork. - vollziehen die Studierenden mögliche Ausführungsreihenfolgen nach.
Diese Aufgabe war Teil der Klausur im Sommersemester 2025 (Zweittermin).
Level 1: Wissen
Welchen Rückgabewert erhalten der Eltern- bzw. Kindprozess nach einem erfolgreichen Aufruf von fork?
Dem Handbuch ist zu entnehmen:
❯ man 3 fork
…
RETURN VALUE
Upon successful completion, fork() shall return 0 to the child
process and shall return the process ID of the child process to
the parent process. Both processes shall continue to execute from
the fork() function. Otherwise, -1 shall be returned to the parent
process, no child process shall be created, and errno shall be set
to indicate the error.
…
PID) des neu erzeugten Kindprozesses (immer > 0)Level 1: Wissen
Der folgende C-Code wird auf einem Unix-System ausgeführt. Die fehlenden Codeteile (#includes, Definition von main usw.) werden nicht angezeigt - nehmen Sie an, dass diese korrekt sind.
Gehen Sie davon aus, dass alle fork-Systemaufrufe erfolgreich sind.
int main(){
pid_t pid1, pid2;
pid1 = fork();
pid2 = fork();
printf("A");
if (pid1 + pid2 == 0) {
printf("B");
exit();
}
printf("C");
return 0;
}
Wie oft wird der Buchstabe “A” von diesem Code ausgegeben?
→ insgesamt 4 Prozesse, alle 4 Prozesse führen printf("A") aus
Level 1: Wissen
Wie oft wird der Buchstabe “C” von diesem Code ausgegeben?
if-Bedingung und beendet sich in Zeile 10→ 3 Prozesse führen das printf("C") aus
Level 1: Wissen
Ist es möglich, in der Ausgabe die Buchstabenfolge “BA” zu beobachten? Begründen Sie Ihre Antwort!
Ja, “BA” ist möglich (allerdings nur als Teilsequenz in der globalen Ausgabe, nicht als zusammenhängende Ausgabe eines einzelnen Prozesses).
Begründung: Die Prozesse laufen nebenläufig ohne Synchronisation. Das Betriebssystem kann sie beliebig schedulen. Folgendes Szenario ist möglich. Betrachten wir beispielsweise folgende Ausführungsreihenfolge:
→ globale Ausgabe enthält: …BA…
In dieser Aufgabe …
fork.