Un programme est du code exécutable et des données enregistrés dans un fichier. Un processus est un contexte d’exécution actif : il comprend du code mappé, de la mémoire, des identifiants, des descripteurs de fichiers ouverts, l’état des signaux, des informations de planification et un ou plusieurs threads. Un même programme peut posséder de nombreuses instances de processus indépendantes.
Processus · Leçon 3
Détails des processus
Découvrez quels états et ressources distinguent un processus en cours d’exécution d’un programme enregistré sur disque.
Instances de programme et PID
Par exemple, lancez cat sans opérande dans deux terminaux. Chaque instance attend une entrée et possède son propre identifiant de processus :
$ pgrep -a cat
18420 cat
18457 cat
Les deux processus exécutent le même programme, mais peuvent posséder des flux d’entrée, un contenu mémoire, des identifiants, des répertoires de travail et des durées de vie différents. Un PID désigne un processus actif à un instant donné et peut être réutilisé après la fin de ce processus.
Qu’est-ce qui distingue deux instances en cours d’exécution du même programme ?
État suivi par le noyau
Le noyau conserve les informations nécessaires à la planification et au contrôle de chaque processus, notamment :
- les identifiants du processus et de son parent ;
- les identifiants utilisateur et groupe ;
- les mappages de mémoire virtuelle ;
- les descripteurs de fichiers ouverts et le répertoire actuel ;
- les dispositions et les signaux en attente ;
- la politique de planification, la priorité et l’état d’exécution ;
- les données comptables telles que le temps processeur.
Certaines ressources sous-jacentes peuvent être partagées. Des processus apparentés peuvent partager de la mémoire mappée, et les threads d’un même processus partagent un espace d’adressage et de nombreuses ressources du processus. Un processus fournit donc des frontières d’isolation sans que chaque octet ou objet du noyau soit nécessairement privé physiquement.
Quel composant conserve l’état de planification et les identifiants des processus Linux ?
Planification du processeur et mémoire
Les threads exécutables se disputent le temps processeur. L’ordonnanceur du noyau choisit quel thread s’exécute sur quel processeur selon la classe de planification, la priorité, l’affinité du processeur, la charge et la politique. Cela ne garantit pas une part égale à chaque processus.
Chaque processus voit normalement un espace d’adressage virtuel. Le noyau et le matériel associent les adresses virtuelles à la mémoire physique ou à un autre stockage sous-jacent, appliquent des protections et peuvent partager des pages. Une valeur de mémoire dans ps ou top n’est donc pas automatiquement la quantité de mémoire vive physique unique attribuable à ce processus.
Que sélectionne l’ordonnanceur Linux ?
Fin du processus et libération des ressources
Lorsqu’un processus se termine, le noyau libère la plupart de ses ressources privées, ferme les descripteurs restants et enregistre les informations de fin pour son parent. Une petite entrée dans la table des processus peut rester sous forme de zombie jusqu’à ce que le parent récupère l’état de sortie. « Le processus a fini de s’exécuter » et « toute trace a disparu de la table des processus » ne sont donc pas toujours simultanés.
Pourquoi un processus terminé peut-il rester brièvement sous forme de zombie ?
Utilisez l’atelier Gérer et surveiller les processus Linux pour lancer plusieurs instances et comparer leurs PID et leurs états. L’atelier Commande Linux top fournit une vue évolutive de la planification et des mesures de ressources.
Leçon terminée
Vous avez terminé Détails des processus
Vous savez maintenant décrire un processus comme davantage qu’un fichier de programme.
Distinguer le code exécutable enregistré d’une instance de processus active.
Identifier l’état et les ressources suivis par le noyau.
Relier la planification aux threads exécutables plutôt qu’à des parts égales.
Reconnaître que l’état de sortie peut subsister jusqu’à ce que le parent le récupère.
Conservez votre progression
Créez un compte gratuit pour enregistrer cette leçon et continuer sur n'importe quel appareil.
Créer un compte gratuit