Warum braucht man unter Linux ein fork()?
Fork "kopiert" afaik den kompletten Adressraum eines Programmes und erstellt einen neuen Prozess. Das Tolle an Fork ist, das das Kopieren eine "faule" (lazy) Operation ist. Das heißt, Speicherseiten, die keiner der beiden Prozesse nach dem Fork schreibt, teilen sich den physischen Speicher. Das ist eine ziemlich unkompliziert Möglichkeit, am Programmstart geladene Ressourcen im Speicher unter mehreren Prozessen zu teilen.
Andererseits ist der neue Kindprozess eben ein eigenständiger Prozess mit allem was dazu gehört. Die Prozesse können abstürzen ohne den anderen zu beeinflussen.