En informatique , l' identifiant de processus ( ou PID ) est un numéro utilisé par la plupart des noyaux de systèmes d'exploitation — tels que ceux d' Unix , de macOS et de Windows — pour identifier de manière unique un processus actif . Ce numéro peut être utilisé comme paramètre dans divers appels de fonctions, permettant ainsi de manipuler les processus, par exemple en modifiant leur priorité ou en les arrêtant brutalement.
De type Unix
Dans les systèmes d'exploitation de type Unix , les nouveaux processus sont créés par l' fork()appel système `npm start` . L'identifiant du processus (PID) est renvoyé au processus parent , lui permettant de faire référence au processus enfant lors d'appels de fonctions ultérieurs. Le parent peut, par exemple, attendre que le processus enfant se termine avec la waitpid()fonction `terminate`, ou terminer le processus avec `terminate` kill().
Deux tâches possèdent des identifiants de processus (PID) distincts : le PID 0 est utilisé pour swapper ou sched , un processus du noyau qui s'exécute sur un cœur de processeur lorsque celui-ci est inactif. Sous Linux, les threads de ce processus sont également appelés tâches inactives . Dans certaines API, le PID 0 est aussi utilisé comme valeur spéciale désignant toujours le thread, le processus ou le groupe de processus appelant. Le PID 1 correspond généralement au processus init, principalement responsable du démarrage et de l'arrêt du système. À l'origine, le PID 1 n'était pas spécifiquement réservé à init par des mécanismes techniques : il lui était attribué naturellement, étant le premier processus invoqué par le noyau. Les systèmes Unix plus récents possèdent généralement des composants noyau supplémentaires visibles en tant que « processus », auquel cas le PID 1 est activement réservé au processus init afin de maintenir la cohérence avec les systèmes plus anciens.
Les identifiants de processus (PID) sont généralement attribués séquentiellement , en commençant par 0 et en augmentant jusqu'à une valeur maximale variable selon les systèmes. Une fois cette limite atteinte, l'attribution redémarre à 300 et incrémente à nouveau. Sous macOS et HP-UX , l'attribution redémarre à 100 Cependant, lors de ce premier passage et des suivants, tous les PID encore attribués à des processus sont ignorés. Certains considèrent cela comme une faille de sécurité potentielle, car cela permet d'extraire des informations sur le système ou de transmettre des messages de manière clandestine entre les processus. De ce fait, les implémentations particulièrement soucieuses de la sécurité peuvent opter pour une méthode d'attribution des PID différente . Sur certains systèmes, comme MPE/iX , le PID le plus bas disponible est utilisé, parfois afin de minimiser le nombre de pages mémoire du noyau contenant des informations sur les processus.
L’identifiant du processus courant est fourni par un getpid()appel système ou comme variable $$dans le shell. L’identifiant du processus parent est obtenu par un getppid()appel système
Sous Linux , l'ID de processus maximal est donné par le pseudo-fichier /proc/sys/kernel/pid_max. pid_max a historiquement été fixé à 65 535 ( ) sous Linux, mais peut maintenant être configuré jusqu'à 4 194 303 ( ) sur les systèmes Linux 64 bits,
Fichier Pid
Certains processus (dont de nombreux démons , par exemple le démon MySQL ) écrivent leur identifiant de processus dans un emplacement de fichier documenté, afin de permettre à d'autres processus de le rechercher.
Microsoft Windows
Sur les systèmes d'exploitation Microsoft Windows , l'identifiant du processus courant peut être obtenu grâce à la GetCurrentProcessId()fonction de l' API Windows , et celui des autres processus grâce à GetProcessId() . En interne, l'identifiant de processus est appelé identifiant client et est alloué dans le même espace de noms que les identifiants de thread ; ces deux identifiants ne se chevauchent donc jamais. Le processus système inactif possède l'identifiant 0. Sur les anciennes versions de Windows , le processus système possède l'identifiant 8 sous Windows 2000 et 4 sous Windows XP et Windows Server 2003 . Sur la famille de systèmes d'exploitation Windows NT , les identifiants de processus et de thread sont tous des multiples de 4, mais cela ne fait pas partie de la spécification