GNU/Linux >> Tutoriels Linux >  >> Linux

Comment Linux distingue-t-il les threads des processus enfants ?

Depuis un task_struct point de vue, les threads d'un processus ont le même chef de groupe de threads (group_leader en task_struct ), alors que les processus enfants ont un leader de groupe de threads différent (chaque processus enfant individuel).

Ces informations sont exposées à l'espace utilisateur via le /proc système de fichiers. Vous pouvez retrouver les parents et les enfants en regardant le ppid champ en /proc/${pid}/stat ou .../status (cela donne le pid parent); vous pouvez tracer les threads en regardant le tgid champ en .../status (cela donne l'identifiant du groupe de threads, qui est également le pid du chef de groupe). Les threads d'un processus sont rendus visibles dans le /proc/${pid}/task répertoire :chaque thread obtient son propre sous-répertoire. (Chaque processus a au moins un thread.)

En pratique, les programmes souhaitant garder une trace de leurs propres threads s'appuieraient sur les API fournies par la bibliothèque de threads qu'ils utilisent, au lieu d'utiliser des informations spécifiques au système d'exploitation. Généralement sur les systèmes de type Unix, cela signifie utiliser des pthreads.


  1. Cela exécute le top commande avec quelques options supplémentaires :

    top -H -b -n 1
    
    • Le -H L'argument indique à top d'afficher chaque thread individuel. Normalement, top résume tous les threads sous leur processus parent.
    • Le -b L'argument fait que top s'exécute en mode batch - les informations sont collectées, affichées, puis transférées vers stdout au lieu de s'exécuter en mode interactif et d'actualiser les données affichées.
    • Avec le -b option, l'utilisateur doit indiquer à top combien de fois exécuter, cela se fait avec le -n argument et un argument final avec le nombre de fois à exécuter.

    Donc top -H -b -n 1 ordonne au système "d'exécuter en haut, d'afficher les threads individuels, de s'exécuter en mode batch et de ne s'exécuter qu'une seule fois".

  2. Le ps La commande rapporte un instantané des processus en cours d'exécution.

    ps -eLf
    

    Le -eLf argument (peut être utilisé comme -e -L -f ainsi) se décompose comme suit :

    • e dit ps pour afficher tous les processus, quel que soit leur propriétaire ou leur état actuel :actif, en veille, en pause, en attente d'E/S, etc.
    • L indique ps pour afficher les discussions individuelles
    • le f indique ps pour formater la sortie comme une liste au format complet, et en conjonction avec le L argument les colonnes NLWP (nombre de threads) et LWP (ID de thread) sont ajoutées à la sortie.

Linux
  1. Comment tuer les processus en cours d'exécution sous Linux

  2. Comment distinguer le binaire des fichiers texte sous Linux

  3. Comment calculer l'utilisation du processeur d'un processus et de tous ses processus enfants sous Linux ?

  4. Les threads sont-ils implémentés en tant que processus sous Linux ?

  5. Comment Linux alloue-t-il la bande passante entre les processus ?

Comment créer un montage à partir d'images sous Linux

Comment accéder aux partitions Linux à partir de Windows 10

Comment personnaliser la commande Linux top

Comment supprimer une commande de l'historique sous Linux

Comment installer un logiciel à partir de la source sous Linux

Comment trouver les principaux processus en cours d'exécution par utilisation de la mémoire et du processeur sous Linux