Comment les processus sous UNIX sont-ils numérotés?

17

Je ne trouve aucun modèle lorsque je regarde la numérotation des PID dans la table de processus ( ps -a), car les PID ne sont pas des numéros ultérieurs et parfois il y a de grands "écarts" entre ces numéros. Est-ce parce que certains processus peuvent s'exécuter pendant une courte période et qu'ils réservent certains PID? Existe-t-il une plage, après quoi la numérotation des processus est réinitialisée?

J'utilise Mac OS X mais je suppose que la réponse devrait s'appliquer à UNIX en général.

syntagme
la source

Réponses:

18

Oui sur les deux points.

De nombreux processus sont de courte durée. Ils obtiennent un PID, s'exécutent, se terminent et le PID disparaît de la table de processus.

Les processus ne vivent parfois qu'une fraction de seconde!

Souvent, lorsque les programmes démarrent, ils exécutent de nombreuses commandes dans le cadre de la vérification du système et de l'initialisation de leur environnement.

Le nombre PID maximum dépend du système et est parfois configurable. Fondamentalement, si vous savez que vous allez avoir un grand nombre de processus, vous devrez peut-être augmenter le nombre, mais sur les nouveaux systèmes d'exploitation, je pense que le nombre maximal est généralement assez grand pour la plupart des charges de travail.

Les PID sont des entrées dans la table de processus, et plus vous en avez, plus la table de processus occupe de mémoire.

Jetez un œil à cette question connexe: /server/279178/what-is-the-range-of-a-pid-on-linux-and-solaris

Notez également que le "nombre maximal de processus par utilisateur" est lié à cela, une mesure de protection contre un utilisateur malveillant créant intentionnellement de nombreux processus pour monopoliser la table de processus entière.

Johan
la source
7

Il est également possible de configurer certains noyaux modernes pour attribuer des PID aléatoires à de nouveaux processus pour une sécurité améliorée. Au moins Linux et FreeBSD peuvent le faire avec un paramètre sysctl, et OpenBSD le fait toujours. Dans ces cas, vous pouvez en dire moins sur les schémas de numérotation.

unperson325680
la source
Savez-vous quel est, le cas échéant, les coûts de performance pour cela?
Bruce Ediger
@Bruce: le premier patch proposé avait la pire performance d'O (infty) en raison de la randomisation naïve. Mais je pense qu'ils ont obtenu quelque chose de sûr et utilisable. Je n'ai rien trouvé de très actuel sur le sujet ... pas celui que j'utilise. :)
unperson325680
5
Les PID aléatoires ressemblent à de la sécurité à travers l'obscurité pour moi.
Johan
C'est ce que c'est, surtout ...
unperson325680
Hormis les initiatives individuelles, Linux ne le proposait que via le correctif grsecurity , l'équipe du noyau Linux refusait toujours de l'implémenter ( exemple ici ) et même l'équipe grsecurity l'a finalement abandonné fin 2006 .
WhiteWinterWolf