Forum Linux.débutant Comprendre Comment marche GNU/Linux: question sur les processes

Posté par  (site Web personnel) . Licence CC By‑SA.
Étiquettes :
5
25
juin
2021

Je cherche à un peu mieux piger comment marche mon ordi, du coup j'explore et je me pose des questions:

Titre de l'image

C'est LibreOffice Writer, que je viens juste de démarrer sur un PC fraîchement rebooté.

Ne soyez pas surpris si ma question est stupide, mais je n'ai pas réussi à trouver d'information claire à ce propos et ça m'agace de pas comprendre pourquoi il y a autant de processes qui sont lancés d'un coup alors que j'ai une seule fenêtre Writer ouverte.

Je ne cherche pas spécialement à les supprimer (si c'est normal qu'ils soient là, ils sont les bienvenus ;)), mais j'aimerais comprendre à quoi ça correspond/pourquoi ça marche comme ça.

Si vous avez une idée, ou un lien vers une doc accessible au noob que je suis… ;)

  • # Ce sont des threads

    Posté par  . Évalué à 5.

    Tu as lancé htop pour regarder les processus, et par défaut il affiche les threads. La touche H permet de voir seulement les processus principaux (man htop).

    Je t'encourage à regarder du côté de atop (comme top mais avec le réseau, les disques, un genre de synthèse de top+jnettop+iostat+vmstat) et strace (par exemple strace -e trace=file -f libreoffice va t'afficher toutes les accès à des fichiers par libreoffice. C'est assez copieux :D)

    • [^] # Re: Ce sont des threads

      Posté par  (site Web personnel) . Évalué à 1.

      Tu as lancé htop pour regarder les processus, et par défaut il affiche les threads. La touche H permet de voir seulement les processus principaux (man htop).

      Merci, grâce à toi je suis déjà un peu moins c… hum… un peu plus convaincu que je ferai vraiment mieux de lire les pages de man quand j'apprends à utiliser un nouvel outil ;)

      Merci aussi pour tes autres suggestions, que je m'empresserai de d'explorer dès que j'aurai terminé de lire la doc de htop.

    • [^] # Re: Ce sont des threads

      Posté par  (site Web personnel) . Évalué à 1.

      je rajoute quelques commandes basiques :

      • ps -faux

      • pstree (du paquet psmisc)

  • # multi-process

    Posté par  . Évalué à 3.

    Pour compléter, il n'est pas rare que des applications démarrent carrément des sous-processus plutôt que des threads. Il y a plein d'APIs pour communiquer entre processus donc ce n'est pas un frein pour les faire interagir entre eux, et ça délègue à l'OS des choses difficiles à implémenter: séparation en terme de sécurité, indépendance de l'exécution, etc. C'est utilisé par firefox et gnupg par exemple.
    Pour observer la hiérarchie des processus dans htop, c'est le raccourci t.

    • [^] # Re: multi-process

      Posté par  (site Web personnel) . Évalué à 1.

      Merci. J'ai noté ça pour Firefox, de fait ;)

    • [^] # Re: multi-process

      Posté par  . Évalué à 2.

      Petit compléments d'info:

      Tu peux afficher (ponctuellement) l'arborescence des processus et thread avec pstree, c'est à dire qui est actuellement responsable de libérer les ressources quand le processus/thread s'arrête.
      Par défaut, il regroupe ceux qui ont le même nom, mais il existe quelques options bien pratiques, j'aime personnellement utiliser pstree -paT: -p pour afficher les PID, -a pour la ligne de commande, et -T pour ne pas afficher les threads, parce que sinon c'est un bordel monstre.

      2nd point, selon mes lectures dont j'ai perdu la source (à remettre en question donc!), sous linux, un thread et un process c'est la même chose (en terme de fonctionnement technique, j'entend, pas en terme d'interface) et donc il n'y a pas de différence de performance. Perso, j'ai un doute, hein, mais je reconnaît n'avoir jamais creusé trop le sujet, parce que de toute façon je pense que c'est négligeable: même si les processus coûtent un peu «plus cher», ils ont d'immenses avantages, notamment, il est possible que ne pas perdre l'application complète si un sous-processus crash, contrairement aux threads.

      • [^] # Re: multi-process

        Posté par  . Évalué à 2.

        2nd point, selon mes lectures dont j'ai perdu la source (à remettre en question donc!), sous linux, un thread et un process c'est la même chose (en terme de fonctionnement technique, j'entend, pas en terme d'interface) et donc il n'y a pas de différence de performance.

        Je doute qu'en terme de fonctionnement technique ce soit pareil :
        - les threads partagent les segments "data", "BSS" (variables globales) et "heap" (allocation dynamique)
        - les process peuvent partager des zones mémoire entre eux, mais il faut explicitement le demander au système d'exploitation
        - par défaut il n'y a pas de protection mémoire entre les threads
        - si tu fais un exec() depuis un thread tous les autres seront impactés, ce n'est pas le cas entre process

        Après, de mémoire, c'est effectivement le scheduler de Linux qui gère les threads Posix. Je ne suis pas certain que ce soit le cas en Java par exemple.

        Les vrais naviguent en -42

  • # Quelques liens intéressants sur process et threads ...

    Posté par  . Évalué à 5.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.