PID Namespace
Informations de base
L'espace de noms PID (Process IDentifier) est une fonctionnalité du noyau Linux qui fournit une isolation des processus en permettant à un groupe de processus d'avoir son propre ensemble de PID uniques, séparés des PID dans d'autres espaces de noms. Cela est particulièrement utile dans la conteneurisation, où l'isolation des processus est essentielle pour la sécurité et la gestion des ressources.
Lorsqu'un nouvel espace de noms PID est créé, le premier processus de cet espace de noms se voit attribuer le PID 1. Ce processus devient le processus "init" du nouvel espace de noms et est responsable de la gestion des autres processus au sein de l'espace de noms. Chaque processus ultérieur créé dans l'espace de noms aura un PID unique dans cet espace de noms, et ces PID seront indépendants des PID dans d'autres espaces de noms.
Du point de vue d'un processus au sein d'un espace de noms PID, il ne peut voir que les autres processus dans le même espace de noms. Il n'est pas conscient des processus dans d'autres espaces de noms, et il ne peut pas interagir avec eux en utilisant des outils de gestion de processus traditionnels (par exemple, kill
, wait
, etc.). Cela offre un niveau d'isolation qui aide à empêcher les processus de perturber les uns les autres.
Fonctionnement :
Lorsqu'un nouveau processus est créé (par exemple, en utilisant l'appel système
clone()
), le processus peut être affecté à un espace de noms PID nouveau ou existant. Si un nouvel espace de noms est créé, le processus devient le processus "init" de cet espace de noms.Le noyau maintient une correspondance entre les PIDs dans le nouvel espace de noms et les PIDs correspondants dans l'espace de noms parent (c'est-à-dire l'espace de noms à partir duquel le nouvel espace de noms a été créé). Cette correspondance permet au noyau de traduire les PIDs lorsque cela est nécessaire, par exemple lors de l'envoi de signaux entre des processus dans des espaces de noms différents.
Les processus au sein d'un espace de noms PID ne peuvent voir et interagir qu'avec d'autres processus dans le même espace de noms. Ils ne sont pas conscients des processus dans d'autres espaces de noms, et leurs PIDs sont uniques dans leur espace de noms.
Lorsqu'un espace de noms PID est détruit (par exemple, lorsque le processus "init" de l'espace de noms se termine), tous les processus au sein de cet espace de noms sont terminés. Cela garantit que toutes les ressources associées à l'espace de noms sont correctement nettoyées.
Laboratoire :
Créer différents espaces de noms
CLI
En montant une nouvelle instance du système de fichiers /proc
si vous utilisez le paramètre --mount-proc
, vous vous assurez que le nouvel espace de noms de montage a une vue précise et isolée des informations de processus spécifiques à cet espace de noms.
Docker
Vérifier dans quel espace de noms se trouve votre processus
Trouver tous les espaces de noms PID
Notez que l'utilisateur root de l'espace de noms PID initial (par défaut) peut voir tous les processus, même ceux des nouveaux espaces de noms PID, c'est pourquoi nous pouvons voir tous les espaces de noms PID.
Entrer dans un espace de noms PID
Lorsque vous entrez dans un espace de noms PID à partir de l'espace de noms par défaut, vous pourrez toujours voir tous les processus. Et le processus de cet espace de noms PID pourra voir le nouveau bash sur l'espace de noms PID.
De plus, vous ne pouvez entrer dans un autre espace de noms de processus que si vous êtes root. Et vous ne pouvez pas entrer dans un autre espace de noms sans un descripteur pointant vers celui-ci (comme /proc/self/ns/pid
)
Références
Last updated