Les processus
Les ordinateurs que nous utilisons ont la capacité d’exécuter plusieurs programmes en même temps :
- Navigateur internet
- Jeu vidéo
- Musique
- Discord
- IDE
Et pourtant… ils ne possèdent qu’un seul processeur.
Comment peuvent-ils faire tourner plusieurs programmes en même temps ?
Notion de processus
Un processus est un programme en cours d’exécution.
Exemples :
- Lancer un jeu → création d’un processus
- Ouvrir un navigateur → création d’un processus
- Lancer Python → création d’un processus
Quand le programme se ferme → le processus se termine.
Programme vs Processus
- Programme
- Processus
Un programme est :
- un fichier
- du code binaire
- stocké sur le disque
Exemple :
Un processus est :
- un programme en train de s’exécuter
- chargé en mémoire
- exécuté par le processeur
Rôle du système d’exploitation
Le système d’exploitation (OS) :
- lance les programmes
- gère la mémoire
- gère le processeur
- gère les processus
Un OS moderne est multi-processus. Avec, nous avons la possibilité de :
- jouer
- écouter musique
- télécharger
- naviger sur le web
- ...
tout en même temps.
On appelle multitâche la capacité d’un système d’exploitation à exécuter plusieurs processus en même temps.
On distingue deux types de multitâche :
- Multitâche coopératif
- Multitâche préemptif
Chaque programme doit rendre la main volontairement.
Si un programme bloque, tout le système peut bloquer.
Le système d’exploitation décide quand arrêter un processus.
Tous les systèmes modernes utilisent ce mode.
Windows, Linux et macOS utilisent un multitâche préemptif.
Les états d’un processus
Un processus peut être dans 3 états.
- État prêt
- État élu
- État bloqué
Le processus attend d’être exécuté.
Le processus est exécuté par le processeur.
Le processus attend une ressource :
- fichier
- clavier
- réseau
- disque
L’ordonnanceur
Quand plusieurs processus veulent le processeur… Qui passe en premier ?
C’est l’ordonnanceur qui choisit.
L’ordonnanceur utilise différentes stratégies pour choisir le processus à exécuter :
- priorité
- temps partagé
- file d’attente
La simulatanéité de l'exécution des tâches est une illusion créée par la rapidité du processeur à changer de processus.
Chaque processus s’exécute pendant un temps très court appelé quantum (temps alloué au processus par le processeur).
Exemple :
- P1 → 5 ms
- P2 → 5 ms
- P3 → 5 ms
Gestion des processus
Création des processus
Un processus peut créer d’autres processus.
On parle de :
- processus père
- processus fils
Au démarrage du système d’exploitation :
- un processus initial est créé (le processus 0)
- tous les autres en descendent
Une fork bomb est un programme qui crée des processus en boucle jusqu’à saturer le système.
Son nom est issu de la commande fork() sous linux permettant de créer des processus, et de la nature explosive de son comportement.
Exemple d'une commande sous Linux :
:(){ :|:& };:
Cette commande crée une fonction récursive qui s'appelle elle-même en arrière-plan, créant ainsi un nombre exponentiel de processus.
⚠️ Ne jamais tester sur votre ordinateur.
Les systèmes modernes limitent le nombre de processus par utilisateur, trop de processus sature la mémoire et bloque le système.
Identification des processus
Chaque processus possède 2 identifiants uniques :
- PID (Process IDentifier) : identifiant du processus
- PPID (Parent Process Identifier) : identifiant du processus père
Observer les processus
Observer les processus permet de comprendre ce que fait réellement l’ordinateur.
Cela permet notamment de :
- voir quels programmes sont en cours d’exécution
- détecter un programme bloqué
- comprendre pourquoi l’ordinateur ralentit
- surveiller l’utilisation du processeur et de la mémoire
- repérer un programme suspect
- Windows
- Linux
Ouvrir le Gestionnaire de tâches
Ctrl + Shift + Esc
Commandes utiles :
ps: afficher les processustop: afficher les processus en temps réelhtop: afficher les processus en temps réel (interface utilisateur améliorée)
Terminer un processus
Il peut être nécessaire d’arrêter un processus lorsqu’un programme ne répond plus ou consomme trop de ressources.
- Windows
- Linux
Gestionnaire de tâches → clic droit → Fin de tâche
Commande :
kill <PID>
Processus zombies et orphelins
Dans certains cas particuliers, des processus peuvent rester dans un état anormal. Comprendre ces situations est important pour diagnostiquer des problèmes système.
Un processus zombie est un processus terminé mais qui reste présent dans la table des processus.
Cela se produit lorsque :
- le processus fils s'est terminé
- mais le processus père n'a pas encore récupéré son code de fin
Le zombie ne consomme presque pas de mémoire, mais trop de zombies peuvent saturer la table des processus.
Un processus orphelin est un processus dont le père s’est terminé avant lui.
Dans ce cas, le système d’exploitation rattache automatiquement ce processus au processus système (PID 1 sous Linux).
Cela permet d’éviter qu’un processus reste sans contrôle.
La présence de nombreux zombies ou orphelins peut indiquer :
- un bug dans un programme
- une mauvaise gestion des processus
- une utilisation incorrecte de
fork - un problème dans le système d’exploitation
L’interblocage
Un interblocage (deadlock) se produit lorsque deux processus attendent chacun une ressource détenue par l’autre.
Exemple :
- P1 possède R1
- P2 possède R2
- P1 veut R2
- P2 veut R1
→ blocage total
Plus aucun processus ne peut avancer.
La sonde Mars Pathfinder (1997) a subi un bug réel lié à la gestion des processus et à l’ordonnancement.
Un processus très important devait accéder à une ressource partagée, mais un processus moins prioritaire gardait cette ressource trop longtemps.
Pendant ce temps, un autre processus encore plus prioritaire attendait, ce qui provoquait un blocage du système.
Ce problème est appelé inversion de priorité :
- un processus prioritaire attend
- un processus moins prioritaire bloque la ressource
- le système peut se retrouver bloqué
Le bug était suffisamment grave pour provoquer des redémarrages de la sonde sur Mars.
La NASA a pu corriger le problème à distance en modifiant l’ordonnanceur, sans avoir besoin de récupérer la sonde.
Cet exemple montre que la gestion des processus n’est pas seulement théorique :
- elle est critique dans les systèmes embarqués
- elle peut provoquer des pannes réelles
- elle doit être parfaitement maîtrisée dans les systèmes critiques