En regardant la source de strace
j'ai trouvé l'utilisation du drapeau de clone CLONE_IDLETASK
qui est décrit comme suit:
#define CLONE_IDLETASK 0x00001000 /* kernel-only flag */
Après une analyse plus approfondie, j’ai constaté que, bien que cet indicateur ne soit pas couvert, man clone
il est en fait utilisé par le noyau pendant le processus de démarrage pour créer des processus inactifs (qui doivent tous avoir le PID 0) pour chaque processeur de la machine. c'est-à-dire qu'une machine avec 8 processeurs aura au moins 7 (voir question ci-dessous) de tels processus "en cours d'exécution" (guillemets).
Cela m’amène à poser une ou deux questions sur le fonctionnement réel de ce processus "inactif". Mon hypothèse est qu'il exécute l'opération NOP de manière continue jusqu'à la fin de son délai et que le noyau assigne un processus réel à exécuter ou assigne à nouveau le processus inactif (si la CPU n'est pas utilisée). Pourtant, c'est une supposition complète. Alors:
Par exemple, sur une machine avec 8 CPU, 7 processus inactifs seront-ils créés? (et un processeur sera tenu par le noyau lui-même sans travail utilisateur performant?)
Le processus inactif est-il vraiment juste un flux infini d'opérations NOP? (ou une boucle qui fait la même chose).
Est-ce que l'utilisation du processeur (par exemple
uptime
) est simplement calculée en fonction de combien de temps le processus inactif était sur le processeur et combien de temps il n'était pas là pendant une certaine période?
PS Il est probable que cette question est en grande partie due au fait que je ne comprends pas tout à fait le fonctionnement d’un processeur. c'est-à-dire que je comprends l'assemblage, les délais et les interruptions mais je ne sais pas comment, par exemple, un processeur peut utiliser plus ou moins d'énergie en fonction de ce qu'il est en train d'exécuter. Je serais reconnaissant si quelqu'un peut m'éclairer là-dessus aussi.