Exposé Sur: Les processus dans le systéme Linux
Etudiante: Aggab Hibat-Errahmane
Groupe: N°01
Proff: Mme. Gasmi
2022/2023
Introduction: Les Processus
Un processus est un ensemble d’instructions qui sont en train
d’être exécutées par un ordinateur. Il provient d’un programme et
nécessite des ressources comme du temps, de la mémoire, des fichiers et
des périphériques. Le système d’exploitation est le logiciel principal qui
dirige l’utilisation des ressources par les processus. Il reçoit des demandes
de la part des logiciels applicatifs et gère les processus en les créant, en
les interrompant et en les supprimant. Le système d’exploitation apporte
ainsi commodité, efficacité et capacité d’évolution aux logiciels et au
matériel informatique. Les processus sont identifiés par un numéro
unique (PID) et sont organisés de façon hiérarchique (PPID) selon une
relation père/fils. Il existe des commandes pour gérer et surveiller les
processus, comme ps, pstree, top, htop et kill. Il existe aussi des signaux
pour communiquer avec les processus et les contrôler.
Processus sous Linux PID PPID fork thread
Un processus sous Linux est un programme en cours d’exécution
qui utilise des ressources du système comme le processeur, la mémoire,
les fichiers et les périphériques.
Chaque processus a un identifiant unique appelé PID (Process
Identifier) qui permet de le reconnaître et de le manipuler. Le PID est un
nombre entier qui commence à 1 et qui est attribué séquentiellement aux
processus créés.
Les processus sont organisés de façon hiérarchique selon une
relation père/fils. Chaque processus a un PPID (Parent Process Identifier)
qui correspond au PID du processus qui l’a créé. Le premier processus du
système est le processus init (ou systemd) qui a le PID et qui est le père
de tous les autres processus.
La création d’un processus se fait par l’appel système fork qui
duplique le processus appelant en créant un processus fils. Le processus
fils hérite des caractéristiques du processus père mais possède son
propre PID et son propre espace mémoire. L’appel fork renvoie le PID du
fils au père et 0 au fils.
Un thread est une unité d’exécution légère qui partage l’espace
mémoire et les ressources du processus auquel il appartient. Un thread a
son propre TID (Thread Identifier) qui est équivalent au LWP (LightWeight
Process) mais qui n’est pas visible par les commandes usuelles. Un thread
peut être créé par l’appel système clone ou par l’utilisation de
bibliothèques comme pthread.
Commandes ps pstree top htop kill sur Linux
La commande ps permet de lister les processus en cours
d’exécution et d’afficher des informations sur ces processus, comme leur
PID, leur PPID, leur état, leur temps CPU, leur mémoire utilisée, etc. On
peut utiliser différentes options pour filtrer ou formater les résultats, par
exemple :
ps -e : affiche tous les processus du système.
ps -u user : affiche les processus appartenant à l’utilisateur user.
ps -f : affiche les processus avec une sortie complète (full format).
ps -o pid,ppid,user,args : affiche les processus avec les colonnes
spécifiées (pid, ppid, user, args).
La commande pstree permet de visualiser les processus sous forme
d’arbre selon leur relation père/fils. On peut utiliser différentes options
pour modifier l’affichage de l’arbre, par exemple :
pstree -p : affiche les PID des processus entre parenthèses.
pstree -u user : affiche seulement les processus appartenant à
l’utilisateur user.
pstree -a : affiche les arguments passés aux processus.
pstree -c : ne compresse pas les branches identiques de l’arbre.
La commande top permet de surveiller en temps réel les processus
et les ressources du système comme le processeur, la mémoire, le disque
et le réseau. On peut utiliser différentes touches pour interagir avec la
commande top, par exemple :
k : permet de tuer un processus en entrant son PID.
u : permet de filtrer les processus par utilisateur.
P : permet de trier les processus par utilisation du processeur.
M : permet de trier les processus par utilisation de la mémoire.
La commande htop est une version améliorée de la commande top
qui offre une interface plus conviviale et plus de fonctionnalités. On peut
utiliser différentes touches pour interagir avec la commande htop, par
exemple :
F9 ou k : permet de tuer un processus en sélectionnant le signal à
envoyer.
F4 ou / : permet de rechercher un processus par son nom.
F5 ou t : permet d’afficher les processus sous forme d’arbre.
F6 ou > : permet de trier les processus par différents critères.
La commande kill permet d’envoyer un signal à un ou plusieurs
processus pour les arrêter ou les contrôler. On peut utiliser différentes
options pour spécifier le signal à envoyer ou le PID du processus à cibler,
par exemple :
kill pid : envoie le signal SIGTERM au processus dont le PID est pid.
kill -s SIGKILL pid : envoie le signal SIGKILL au processus dont le PID
est pid.
kill -l : affiche la liste des signaux disponibles.
Signaux Linux et la commande kill
Un signal est un moyen de communication entre les processus et le
système d’exploitation. Il s’agit d’une notification asynchrone qui informe
un processus qu’un événement particulier s’est produit. Par exemple, un
signal peut être envoyé lorsqu’un processus dépasse son temps
d’exécution, lorsqu’un utilisateur appuie sur Ctrl+C, ou lorsqu’un
processus enfant se termine.
Un signal peut être envoyé par la commande kill, par une combinaison de
touches au clavier, ou par un appel système. Un signal peut être reçu par
un processus qui peut réagir de différentes manières selon le type de
signal1. Par défaut, la plupart des signaux entraînent la terminaison du
processus, mais certains signaux peuvent être ignorés ou interceptés par
le processus qui peut exécuter une routine de traitement spécifique.
Il existe plusieurs signaux normalisés qui ont un nom (précédé de SIG) et
un numéro associé. Les signaux les plus courants sont :
SIGINT (2) : interrompt le processus, similaire à l’appui sur Ctrl+C.
SIGKILL (9) : force le processus à se terminer immédiatement, sans lui
permettre de se nettoyer ou de sauvegarder ses données.
SIGSTOP (19) : arrête le processus, l’empêchant de s’exécuter ou de
consommer des ressources.
SIGCONT (18) : reprend un processus arrêté.
SIGTERM (15) : demande au processus de se terminer proprement.
La commande kill permet d’envoyer un signal à un ou plusieurs processus
pour les arrêter ou les contrôler. On peut utiliser différentes options pour
spécifier le signal à envoyer ou le PID du processus à cibler, par exemple :
kill pid : envoie le signal SIGTERM au processus dont le PID est pid.
kill -s SIGKILL pid : envoie le signal SIGKILL au processus dont le PID
est pid.
kill -l : affiche la liste des signaux disponibles.
Conclusion:
Un processus sous Linux est un programme en cours d’exécution
qui utilise des ressources du système comme le processeur, la mémoire,
les fichiers et les périphériques.
Chaque processus a un identifiant unique (PID) et un identifiant de
parent (PPID) qui définissent sa place dans la hiérarchie des processus.
Un processus peut être créé par l’appel système fork qui duplique le
processus appelant, ou par l’appel système clone qui crée un thread au
sein du même espace mémoire.
Il existe des commandes pour lister, visualiser et surveiller les
processus, comme ps, pstree, top et htop.
Il existe des signaux pour arrêter ou contrôler les processus, comme
SIGINT, SIGKILL, SIGSTOP, SIGCONT et SIGTERM. Ces signaux peuvent être
envoyés par la commande kill ou par une combinaison de touches au
clavier.
Connaître et maîtriser les processus sous Linux est important pour
l’administration système, car cela permet de contrôler le fonctionnement
du système, de détecter et de résoudre les problèmes, et d’optimiser les
performances et la sécurité.