Question

J'ai une question un peu idiote, si j'ai une série de processus qui sont créés ... ce ne sont pas nécessairement une sorte d'héritage, le pid des processus doit être des nombres continus ou aléatoires?

Était-ce utile?

La solution

Ceci est déterminé par le système d'exploitation.

En général, ils sont généralement attribués de manière séquentielle par le système d'exploitation. Cependant, ce comportement n’est pas l’objet de décisions, car la plupart des spécifications du système d’exploitation précisent que l’allocation d’ID de processus n’est pas déterministe (c’est-à-dire qu’elle pourrait être aléatoire, et pourrait changer dans une version ultérieure, etc.).

Autres conseils

Sous Linux, les pids sont généralement attribués de manière séquentielle à l’échelle du système, mais ils se recouvrent périodiquement, et il peut y avoir des "lacunes" causées par d’autres processus non liés. Dans un cas extrême, vous pourriez avoir un «espace» suffisamment large pour provoquer ce bouclage. Donc, ne supposez pas un ordre particulier, mais gardez explicitement une trace des PID de votre processus parent ou enfant.

Voici comment tester le fonctionnement de votre système:

for i in $(seq 20); do ps; done | grep ps

Les identifiants PID du "ps" les commandes sont des processus consécutifs, ou presque consécutifs comme tout autre appelant pourrait raisonnablement s’attendre à être en mesure de se générer.

Mon terminal cygwin sous Windows les alloue de manière aléatoire, mon hôte Web les alloue de manière séquentielle (avec des lacunes occasionnelles qui concernent vraisemblablement des processus exécutés par d'autres utilisateurs ou serveurs).

Certains considèrent que l’attribution séquentielle de PID est un léger problème de sécurité, dans la mesure où elle risque de laisser échapper des informations entre les utilisateurs d’un système multi-utilisateurs.

Sous AIX, vous verrez souvent des PID plus grands (par exemple à 7 chiffres) et ils ne sont pas nécessairement alloués de manière semi-séquentielle (bien que je semblais effectuer un cycle par incréments de 2 lors du test; il y avait un autre utilisateur sur la machine, donc cela ne signifie peut-être pas grand chose).

Nouvelle connexion sur un ordinateur AIX 5.3:

$ ps
     PID    TTY  TIME CMD
 1060910 pts/27  0:00 -ksh
 1155224 pts/27  0:00 ps
$

Cela dépend de votre plate-forme, mais vous ne devriez pas dépendre d'un ordre spécifique pour votre pid.

Sous Windows, les pid sont généralement alloués en nombre croissant, mais lorsque les processus quittent, ils peuvent être recyclés. Vous verrez ainsi les cas où un processus plus récent a un pid inférieur à un processus plus ancien. De plus, les pid proviennent du même espace de noms que tid, vous ne les verrez donc pas augmenter de 4 à mesure que vous lancez de nouveaux processus.

De votre point de vue, ils seront aléatoires. Le système gère ces numéros et les affecte au fur et à mesure que les processus sont créés. Un rapide coup d'œil sur les PID actuellement installés sur mon système montre qu'ils sont tous divisibles par 4.

Si vous créez ces enfants, vous connaissez le pid, celui-ci dépend du planificateur de système d'exploitation, vous vous en fichez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top