Je suis actuellement en train d'apprendre fork()
y execv()
et j'avais une question concernant l'efficacité de la combinaison.
On m'a montré le code standard suivant :
pid = fork();
if(pid < 0){
//handle fork error
}
else if (pid == 0){
execv("son_prog", argv_son);
//do father code
Je sais que fork()
clone l'ensemble du processus (en copiant l'intégralité du tas, etc.) et que execv()
remplace l'espace d'adressage actuel par celui du nouveau programme. En gardant cela à l'esprit, l'utilisation de cette combinaison n'est-elle pas très inefficace ? Nous copions l'intégralité de l'espace d'adressage d'un processus pour ensuite l'écraser immédiatement.
Donc ma question :
Quel est l'avantage obtenu en utilisant cette combinaison (au lieu d'une autre solution) qui fait que les gens continuent à l'utiliser, même si nous avons des déchets ?
25 votes
Il y a très longtemps, les systèmes copiaient tout en même temps. Je vous suggère de vous renseigner sur radiomessagerie , mémoire virtuelle y copie sur écriture .