1. Bien que l'utilisateur se connecte à un seul processus (shell qui est son interface en ligne de commande), les utilisateurs finissent par exécuter de nombreux processus à la suite d'actions telles que:
-> Exécution d'une tâche non interactive en arrière-plan.
-> Basculement entre les tâches interactives via le contrôle des tâches.
-> Démarrage de plusieurs processus qui fonctionnent ensemble à travers des tuyaux.
-> Système de fenêtrage en cours d'exécution tel que le système X window qui permet d'ouvrir plusieurs fenêtres de terminal.
2. Afin de gérer tous ces processus, le noyau doit former des groupes de processus comprenant ces processus.
3. Pour gérer davantage ces groupes de processus en fonction de l'utilisateur, ces groupes sont divisés en fonction de l'utilisateur en sessions. (Notez ici que l'utilisateur n'est pas un utilisateur Linux, mais le shell ou le terminal représente l'utilisateur. Deux terminaux sur la même machine connectés par le même utilisateur Linux) signifie 2 utilisateurs différents et donc 2 sessions d'utilisateurs différentes ici. Un terminal peut contrôler le terminal pour une seule session).
Le processus qui exécute le shell pour cet «utilisateur» ou cette session est appelé chef de session.
4. Notez également la fermeture du terminal en appuyant sur le bouton «x» pour ne pas sortir de ce terminal. Ce terminal continue de fonctionner en arrière-plan. Si vous souhaitez interrompre la session depuis le terminal, vous devez vous déconnecter de là en appuyant sur CTRL + D ou quitter.
5. Lorsque vous vous déconnectez du terminal, le noyau envoie un signal SIGHUP (similaire à kill -1) au processus qui est le leader de la session. Désormais, tous les autres processus exécutés dans le terminal sont des enfants de ce chef de session. Ces processus enfants avaient formé des groupes de processus qui sont contrôlés par ce processus de chef de session (processus parent).
6. Le processus de leader de session envoie SIGHUP à chaque processus enfant, certains processus se terminent, tandis que certains peuvent choisir de ne pas se terminer (ceux suspendus ou en cours d'exécution en arrière-plan). Ceux qui choisissent de ne pas terminer deviennent orphelins en tant que superviseurs de session et immédiatement adoptés par le processus init (parent de tous les processus dans la machine Linux).
Pour en savoir plus Lien de référence Le modèle de processus de développement Linux