2010-08-20 8 views

Répondre

4

fourchette crée un nouveau processus appelé l'enfant du parent ..... exec remplace le programme en cours d'exécution en cours avec le exec'd de processus et reste donc le processus enfant du ... Vous PARENT

+1

Maintenant, rappelez-vous que ce n'est peut-être pas un locuteur natif anglais. –

+0

Je suis souvent surpris de voir à quel point certaines personnes sont passionnées par la neutralité sexuelle de la terminologie. Père-fils représente toujours la même relation, même si ce n'est pas officiel. Mais merci pour la correction. – EpsilonVector

+0

Désolé, je ne voulais pas laisser entendre quoi que ce soit sur la capitalisation au-delà de souligner que ce sont les termes que vous verrez surtout dans la littérature ..... – ennuikiller

2

Oui c'est. De plus, la terminologie "famille de processus" est inconfortablement proche de "groupe de processus", ce qui est un concept assez important.

3

Oui. execv ne crée pas de nouveau processus - c'est pourquoi vous devez d'abord bifurquer.

0

» re sur la bonne voie. Fondamentalement, l'appel système fork (2) dans l'ancien UNIX a créé une copie du processus qui a fourché, avec un nouveau PID et une nouvelle pile de processus, en copiant l'espace mémoire pour le faire. Le exec charge le processus existant avec une nouvelle image. Vous pouvez voir une version de cela dans l'opération exec dans la plupart des shells - il ne s'agit pas de l'image désirée dans le processus qui était occupé par le shell.

Lorsque vous initialisez un processus, l'appel du système fork renvoie le PID du nouveau processus, si vous êtes le parent, ou 0 si vous êtes l'enfant. Le processus fils hérite également de tous les descripteurs de fichiers ouverts, en particulier 0,1 et 2, plus communément appelés STDIN, STDOUT et STDERR.

(Quiz Pop: comment voulez-vous que une coquille gère la redirection, par exemple avec >?)

Variantes UNIX modernes avec des espaces d'adressage plus grand fourchette variant de l'outils (UNIX n'avait 64K mots au total original!) Appelé vfork qui copie uniquement le sous-ensemble nécessaire du processus pour démarrer, et dépend du gestionnaire de mémoire pour récupérer le reste si nécessaire. Comme la plupart du temps fork est immédiatement suivi par exec, qui a besoin de charger une nouvelle image, c'est une optimisation significative.

Mach fait un pas de plus; Lorsque vous créez un nouveau processus, rien n'est copié sauf ce dont vous avez besoin pour un contexte d'exécution. l'image est exactement la même. La copie ne se produit que lorsque le processus modifie un emplacement en mémoire, à quel point la page contenant cet emplacement est copiée. C'est ce qu'on appelle "copie sur écriture", et est presque optimale.

+0

Je suis désolé que je devais baisser votre réponse car c'est un bien écrit, mais il ne répond pas du tout à la question. Le sujet traite la relation enfant-parent, pas comment la fourchette fonctionne ou comment sa mise en œuvre diffère d'un système à l'autre. – EpsilonVector