1. Embora o usuário efetue login em um único processo (shell, que é sua interface de linha de comando), os usuários acabam executando muitos processos como resultado de uma ação como:
-> Executando tarefas não interativas em segundo plano.
-> Alternar entre tarefas interativas via controle de tarefas.
-> Iniciando vários processos que trabalham juntos através de tubos.
-> Sistema de janelas em funcionamento, como o sistema de janelas X, que permite a abertura de várias janelas de terminais.
2. Para lidar com todos esses processos, o kernel precisa formar grupos de processos compostos por esses processos.
3. Para gerenciar esses grupos de processos ainda mais de acordo com o usuário, esses grupos são divididos de acordo com o usuário em sessões (observe que o usuário não é usuário do Linux, mas shell ou terminal significa usuário. Dois terminais na mesma máquina conectados pelo mesmo usuário do Linux significa 2 usuários diferentes e, portanto, 2 sessões de usuário diferentes aqui. Um terminal pode controlar o terminal apenas para uma única sessão).
O processo que está executando o shell para esse "usuário" ou sessão é conhecido como líder da sessão.
4. Observe também o fechamento do terminal pressionando o botão 'x' para não sair do terminal. Esse terminal continua funcionando em segundo plano. Se você quiser fazer uma sessão excedente do terminal, precisará sair do sistema pressionando CTRL + D ou sair.
5. Ao sair do terminal, o kernel envia o sinal SIGHUP (semelhante ao kill -1) para processar o líder da sessão. Agora, todos os outros processos em execução no terminal são filhos deste líder de sessão. Esses processos filhos formaram grupos de processos que são controlados por esse processo líder de sessão (processo pai).
6. O processo líder da sessão envia SIGHUP para cada processo filho, alguns terminam, enquanto outros podem optar por não terminar (aqueles suspensos ou em execução em segundo plano). Aqueles que optam por não finalizar tornam-se órfãos como overs de sessão e imediatamente adotados pelo processo init (pai de todo o processo na máquina linux).
Para mais informações, consulte Link O Modelo de Processo de Desenvolvimento Linux