Operationen auf Prozessen
Operationen auf Prozessen
Auf einen Blick
Aus Programmierersicht zählen die Operationen: erzeugen (fork), überlagern (exec), beenden (exit), warten (wait), Priorität ändern (nice), Zustand ändern (sleep, sched_yield).
Die Unix-Operationen
| Operation | Unix-Aufruf | Bedeutung |
|---|---|---|
| Erzeugen | fork() | erzeugt eine Kopie des Erzeugers (Eltern → Kind) |
| Überlagern | exec() | ersetzt das Prozessabbild durch ein anderes Programm |
| Beenden | exit() | beendet den Prozess (→ terminated) |
| Priorität ändern | nice() | beeinflusst das Scheduling |
| Zustand ändern | sleep(), sched_yield() | schlafen legen / CPU freiwillig abgeben |
| Warten | wait() | Elternprozess wartet auf ein Kind |
Das fork/exec-Muster
Unter Unix ist die Erzeugung eines neuen Programms typischerweise zweistufig:
pid_t pid = fork(); // 1. Kopie des aktuellen Prozesses
if (pid == 0) {
exec("/bin/ls", ...); // 2. Kind überlagert sich mit neuem Programm
} else {
wait(NULL); // Eltern wartet auf das Kind
}
fork() legt einen neuen Eintrag in der Prozesstabelle an. Vergisst der Elternprozess das wait(), bleibt das beendete Kind als Zombie im Zustand terminated hängen.