Un PCB ou un bloc de contrôle de processus , est défini comme ceci sur Wikipedia
Process Control Block (PCB, également appelé Task Controlling Block, [1] Task Struct ou Switchframe) est une structure de données dans le noyau du système d'exploitation contenant les informations nécessaires pour gérer un processus particulier. Le PCB est "la manifestation d'un processus dans un système d'exploitation
et son devoir est:
Process identification data
Processor state data
Process control data
Alors, où peut-on trouver le PCB d'un processus?
Réponses:
Dans le noyau Linux, chaque processus est représenté par un
task_struct
dans une liste doublement liée, dont la tête estinit_task
(pid 0, pas pid 1). Ceci est communément appelé table de processus .En mode utilisateur, la table de processus est visible par les utilisateurs normaux sous
/proc
. Prendre les titres de votre question:Les données d'identification de processus sont l'ID de processus (qui se trouve dans le chemin d'accès
/proc/<process-id>/...
), la ligne de commande (cmd
) et éventuellement d'autres attributs selon votre définition d '«identification».Les données d'état du processus incluent les données de planification (
sched
,stat
etschedstat
), ce que le processus attend actuellement (wchan
), son environnement (environ
), etc.On pourrait dire que les données de contrôle de processus sont ses informations d'identification (
uid_map
) et ses limites de ressources (limits
).Tout dépend donc de la façon dont vous définissez vos termes ... mais en général, toutes les données sur un processus peuvent être trouvées dans
/proc
.la source
init_task
(pid 0, pas pid 1)" Il n'y a rien de tel queinit_task
. C'estinit
, et son pid est 1, pas 0 (confirmé viapidof init
).pid
n'est que pour les processus ...