Mweerden : NT a été conçu pour le multi-utilisateur dès le premier jour, ce n'est donc pas vraiment une raison. Cependant, vous avez raison de dire que la création de processus joue un rôle moins important sur NT que sur Unix car NT, contrairement à Unix, favorise le multithreading plutôt que le multiprocessing.
Rob, il est vrai que le fork est relativement bon marché lorsque COW est utilisé, mais en fait, le fork est le plus souvent suivi d'un exec. Et un exec doit également charger toutes les images. Discuter des performances de la fourchette n'est donc qu'une partie de la vérité.
Lorsque l'on parle de la vitesse de création des processus, il est probablement bon de faire la distinction entre NT et Windows/Win32. En ce qui concerne NT (c'est-à-dire le noyau lui-même), je ne pense pas que la création de processus (NtCreateProcess) et la création de threads (NtCreateThread) soient significativement plus lentes que sur un Unix moyen. Il se peut qu'il y ait un peu plus de choses, mais je ne vois pas la raison principale de la différence de performance ici.
Si vous regardez Win32, cependant, vous remarquerez qu'il ajoute un certain nombre de frais généraux à la création de processus. Tout d'abord, il faut que le CSRSS soit informé de la création d'un processus, ce qui implique le LPC. Il faut qu'au moins kernel32 soit chargé en plus, et il doit effectuer un certain nombre de tâches comptables supplémentaires avant que le processus ne soit considéré comme un processus Win32 à part entière. Et n'oublions pas tous les frais généraux supplémentaires imposés par l'analyse des manifestes, la vérification si l'image nécessite un shim de compatibilité, la vérification si les politiques de restriction logicielle s'appliquent, yada yada.
Cela dit, je vois le ralentissement général dans la somme de toutes ces petites choses qui doivent être faites en plus de la création brute d'un processus, d'un espace VA et d'un fil initial. Mais comme je l'ai dit au début, en raison de la préférence accordée au multithreading par rapport au multitâche, les seuls logiciels sérieusement affectés par cette dépense supplémentaire sont les logiciels Unix mal portés. Bien que cette situation change lorsque des logiciels comme Chrome et IE8 redécouvrent soudainement les avantages du multiprocessing et commencent à démarrer et démanteler fréquemment des processus...