Dans un système d'exploitation conforme à POSIX , un groupe de processus désigne un ensemble d'un ou plusieurs processus . Entre autres choses, un groupe de processus est utilisé pour contrôler la distribution d'un signal ; lorsqu'un signal est dirigé vers un groupe de processus, le signal est délivré à chaque processus membre du groupe.
De même, une session désigne un ensemble d'un ou plusieurs groupes de processus. Un processus ne peut pas créer un groupe de processus appartenant à une autre session ; en outre, un processus n'est pas autorisé à rejoindre un groupe de processus qui est membre d'une autre session, c'est-à-dire qu'un processus n'est pas autorisé à migrer d'une session à une autre.
Lorsqu'un processus remplace son image par une nouvelle image (en appelant l'une des execfonctions ), la nouvelle image est soumise à la même appartenance au groupe de processus (et donc à la même session) que l'ancienne image.
Applications
La distribution des signaux aux groupes de processus constitue la base du contrôle des tâches employé par les programmes shell . Le pilote de périphérique TTY intègre une notion de groupe de processus de premier plan , auquel il envoie des signaux générés par les interruptions du clavier , notamment SIGINT (« interruption », Control+ C), SIGTSTP (« arrêt du terminal », + ) et SIGQUIT (« quitter », + ). Il envoie également les signaux SIGTTIN et SIGTTOU à tous les processus qui tentent de lire ou d'écrire sur le terminal et qui ne sont pas dans le groupe de processus de premier plan. Le shell, à son tour, partitionne les pipelines de commande qu'il crée en groupes de processus et contrôle quel groupe de processus est le groupe de processus de premier plan de son terminal de contrôle , déterminant ainsi quels processus (et donc quels pipelines de commande) peuvent effectuer des E/S vers et depuis le terminal à un moment donné. ControlZControl\
Lorsque le shell forkest un nouveau processus enfant pour un pipeline de commandes, le processus shell parent et le processus enfant font immédiatement du processus enfant le leader du groupe de processus pour le pipeline de commandes. Cela garantit que l'enfant est le leader du groupe de processus avant que le parent ou l'enfant ne s'appuie sur ce fait.
Lorsqu'une interface utilisateur textuelle est utilisée sur un système de type Unix, les sessions sont utilisées pour implémenter les sessions de connexion . Un processus unique, le leader de session , interagit avec le terminal de contrôle afin de garantir que tous les programmes sont terminés lorsqu'un utilisateur « raccroche » la connexion au terminal. (Lorsqu'un leader de session est absent, les processus du groupe de processus de premier plan du terminal sont censés gérer les interruptions.)
Lorsqu'une interface utilisateur graphique est utilisée, le concept de session est largement perdu et la notion de session du noyau est largement ignorée. Les interfaces utilisateur graphiques, comme celles où le gestionnaire d'affichage X est utilisé, utilisent un mécanisme différent pour implémenter les sessions de connexion.
Détails
L' appel système
setsid est utilisé pour créer une nouvelle session contenant un seul (nouveau) groupe de processus, avec le processus actuel comme chef de session et chef de groupe de processus de ce groupe de processus unique. Les groupes de processus sont identifiés par un entier positif, l' ID de groupe de processus , qui est l' identifiant de processus du processus qui est (ou était) le chef de groupe de processus. Les groupes de processus n'ont pas nécessairement besoin d'avoir des chefs, bien qu'ils commencent toujours par un. Les sessions sont identifiées par l'ID de groupe de processus du chef de session. POSIX interdit la modification de l'ID de groupe de processus d'un chef de session.
L'appel système setpgidest utilisé pour définir l'ID de groupe de processus d'un processus, ce qui permet soit de joindre le processus à un groupe de processus existant, soit de créer un nouveau groupe de processus au sein de la session du processus, le processus devenant le leader du groupe de processus du groupe nouvellement créé. POSIX interdit la réutilisation d'un ID de processus lorsqu'un groupe de processus avec cet identifiant existe toujours (c'est-à-dire lorsque le leader d'un groupe de processus est sorti, mais que d'autres processus du groupe existent toujours). Il garantit ainsi que les processus ne peuvent pas devenir accidentellement leaders de groupe de processus.
L' appel systèmekill est capable de diriger des signaux soit vers des processus individuels, soit vers des groupes de processus.