Dans les systèmes de type Unix, un « processus orphelin » est un processus dont le processus parent a fini de s'exécuter (terminé ou quitté) mais dont le processus enfant continue de s'exécuter. L'ID de processus (PID) du processus parent est toujours enregistré quelque part, mais le processus parent lui-même n'existe plus.
Voici une répartition :
* Fin normale du processus : Généralement, lorsqu'un processus parent se termine, il attend la fin de ses processus enfants. Cette attente est gérée à l'aide d'appels système comme `wait()` ou `waitpid()`. Le processus parent nettoie les ressources associées à ses enfants.
* Processus orphelin : Si le processus parent se termine *sans* attendre ses processus enfants, ces processus enfants deviennent orphelins. Ils courent toujours, mais leur parent est parti.
* Adoption par init : Le point crucial est que les processus orphelins ne sont pas simplement supprimés. Au lieu de cela, le processus d'initialisation (PID 1, le tout premier processus démarré lors du processus de démarrage) les adopte. `init` (ou `systemd` dans de nombreux systèmes modernes) devient leur nouveau processus parent. Cela garantit que les processus orphelins sont toujours correctement gérés et éventuellement terminés une fois leur travail terminé. Essentiellement, le système d'exploitation empêche les processus orphelins de devenir des processus « malveillants ».
* Implications : Bien que l'adoption par `init` évite des problèmes majeurs, il peut y avoir des effets subtils en fonction des spécificités :
* Nettoyage des ressources : Le processus parent d'origine aurait pu être responsable du nettoyage de certaines ressources allouées au processus enfant. Étant donné que le parent est parti, ce nettoyage peut ne pas se dérouler parfaitement, entraînant potentiellement des fuites de ressources mineures (bien que celles-ci soient généralement bien gérées par le système d'exploitation).
* Gestion du signal : La façon dont les signaux sont traités peut être légèrement modifiée car le parent n'est plus présent pour les intercepter ou les gérer.
En bref, le terme « état orphelin » décrit la situation dans laquelle un processus a perdu son parent mais continue de s'exécuter, étant finalement adopté et géré par le processus « init » (ou « systemd »). Ce n'est généralement pas une source de préoccupation majeure, car le système gère cela avec élégance, mais comprendre le concept est important pour l'administration du système et la gestion des processus.
|