Que Sont les Threads de Processus ?
Vous avez peut-être entendu les termes mono-thread (single-threaded) et multi-thread (multi-threaded). Les threads sont des unités d'exécution au sein d'un processus et sont souvent appelés "processus légers" (lightweight processes). Alors que les processus fonctionnent avec leurs propres ressources système isolées, les threads au sein du même processus peuvent partager ces ressources, comme la mémoire. Ce modèle de partage de ressources rend la communication entre les threads beaucoup plus rapide et plus efficace que la communication entre des processus distincts.
Mono-thread contre Multi-thread
Chaque processus possède au moins un thread. Un processus avec un seul thread est appelé mono-thread, tandis qu'un processus avec plus d'un est multi-thread.
Par exemple, lorsque vous utilisez un éditeur de texte moderne, il peut s'exécuter comme un seul processus. Cependant, au sein de ce processus, un thread pourrait gérer votre saisie au clavier, tandis qu'un autre thread s'exécute en arrière-plan pour effectuer la vérification orthographique ou l'enregistrement automatique. Cette exécution concurrente rend l'application plus réactive. L'utilisation de plusieurs threads est souvent plus efficace que le lancement de plusieurs processus pour des tâches connexes.
Comment Afficher les Threads avec ps
Pour inspecter les processus en cours d'exécution et leurs threads, vous pouvez utiliser la commande ps. Bien que ps ait de nombreuses options, une façon courante d'afficher les threads est d'utiliser l'indicateur m.
pete@icebox:~$ ps m
PID TTY STAT TIME COMMAND
2207 pts/2 - 0:01 bash
- - Ss 0:01 -
5252 pts/2 - 0:00 ps m
- - R+ 0:00 -
Interprétation du Résultat
Dans le résultat ci-dessus, les lignes avec un PID (ID de processus) représentent le processus principal. Les lignes situées directement en dessous, qui affichent un tiret (-) au lieu d'un PID, représentent les threads appartenant à ce processus. Dans cet exemple, les processus bash et ps m sont mono-thread, car chacun n'a qu'un seul thread principal listé.