janvier
2012
La fonction fork() peut paraître un peu surprenante au premier abord. La question que vous pouvez légitimement vous poser est : que fait un fork() ?
Cet appel-système alloue un bloc de contrôle dans la table des processus, copie certaines des informations du bloc du père (fichiers ouverts, répertoire courant, etc.) dans le bloc du fils. Il alloue un PID au processus fils.
Le noyau alloue le segment texte du processus, dans lequel il place son code. Le segment de données et la pile ne seront alloués que plus tard, lorsque l’utilisateur tentera de les utiliser. Cette technique, appelée copy on write, permet de réduire les coûts de l’allocation. Enfin, l’état du processus est mis à la valeur exécution.