La séance de questions-réponses d'aujourd'hui nous est offerte par la sous-division SuperUser de Stack Exchange, un groupe de sites Web de questions-réponses dirigé par la communauté.
La question
Le lecteur superutilisateur Agovizer a longuement examiné le tableau d'affichage des processus dans le gestionnaire de tâches Windows et est revenu avec quelques questions, notamment:
What processes, if any, exist between PIDs 0 and 4 on Windows 7? Just out of curiosity what are the processes between 0 and 4, and also between 4 and 200 something.
Nous avons sauté dans le gestionnaire de tâches sur notre machine et nous sommes bien sûr qu'aucun processus n’a été attribué aux emplacements 1, 2 et 3, bien que nos PID aient bondi de 4 à 340, par opposition à ses 4 à 200.
La réponse
Le contributeur de SuperUser, G Koe, ferme l'affaire en un seul coup:
There is no Process ID 1, 2, or 3 because of how the NT kernel handle table works.
Handles are always multiples of four. The Kernel handle process object is used for both process handles and process/thread IDs. It happens that handle values all start at 0x4 (bit 2), and the InitialSystemProcess is the first process to be created, so it gets a PID of 4. Idle process isn’t actually a process and you can’t open it. It probably doesn’t have a real PID but most tools consider it to be 0.
More on the NT handle table here although this is only accurate for NT3-5(xp), as Windows 7 now requires that you only reference kernel handles if attached to PsInitialSystemProcess.
More on Windows 7/8 Handle limits from Mark Russinovich
More on the “multiples of four” in PIDs
Tout ce qu’il suggère suggère de vérifier: il nous manque 1, 2 et 3 (pas des multiples de 4) et chaque valeur de PID dans notre liste de 340 à 13136 est divisible par 4.
Avez-vous quelque chose à ajouter à l'explication? Sound off dans les commentaires. Voulez-vous lire plus de réponses d'autres utilisateurs de Stack Exchange doués en technologie? Découvrez le fil de discussion complet ici.