Windows 7 réutilise-t-il les ID de processus?
La raison pour laquelle je pose cette question est due à mon expérience selon laquelle Windows XP et Linux ne semblent jamais générer d'ID de processus supérieurs à 20-30k. Cependant, ma machine Windows 7 atteindra des ID aussi élevés que 5–10k environ en quelques heures après un redémarrage, ce qui est mon expérience normale du passé. Le lendemain matin, je vérifie et certains processus sont 250k ou plus, ce qui n'est pas le cas.
J'ai activé la fonction d'audit de sécurité pour consigner la création et l'arrêt du processus. Rien ne génère des centaines ou des milliers ou des processus. Seuls 513 de ces événements sont enregistrés pour une période de 24 heures, mais des centaines de milliers d'ID de processus ont été utilisés, semble-t-il.
J'ai essayé une recherche pour ma question et l'une des questions suggérées précédemment posées pointait vers le merveilleux blog de Mark Russinovich . Mais cet article, bien que très intéressant à lire, m'a laissé perplexe.
la source
Réponses:
D'après mes tests, il semble que vous ayez une fausse hypothèse, les numéros PID ne sont pas donnés dans un ordre séquentiel. C'est très facile à prouver, exécutez la commande suivante à partir de la ligne de commande. Il devrait ouvrir 3 copies du bloc-notes.
Sur ma machine, voici les PID des 3 copies qui s'ouvraient toutes en même temps.
Comme vous pouvez voir beaucoup de sauts du PID, si vous les ouvrez un à la fois, vous verrez également que le PID suivant n'est pas toujours plus grand que le précédent. Par exemple, j'ai ouvert une 4e copie du bloc-notes et j'ai obtenu ceci
Il semble donc que Windows 7 choisira simplement un PID aléatoire inutilisé à chaque démarrage d'un processus, il pourrait donc très bien avoir un PID réutilisé tout au long de l'exécution de Windows sans redémarrage.
J'ai écrit un script PowerShell simple (nécessite la version 2 ou plus récente, voir l'historique des réponses pour une version C #) pour le prouver à coup sûr
L' exécution du programme 10 fois il a toujours pris entre
134
et147
lancements de bloc - notes pour le même PID pour être réutilisés (Pourquoi est - ce si petit nombre? GO-GO Gadget anniversaire problème !)la source
J'ai effectué un test pendant une heure et pendant ce temps, 302 processus se sont arrêtés. Parmi ceux-ci, 70 avaient un PID en commun, donc je dirais que le PID est réutilisé fréquemment.
la source