Chapitre 7 - Partie 3 : Gestion des processus et des ressources
1. La notion de processus
Section intitulée « 1. La notion de processus »1.1 Programme vs processus
Section intitulée « 1.1 Programme vs processus »Un programme est un fichier stocké sur le disque (par exemple python.exe ou firefox.exe). Un processus est une instance en cours d'exécution de ce programme.
| Programme | Processus |
|---|---|
| Fichier statique sur le disque | Instance dynamique en mémoire |
| Existe même quand il ne s'exécute pas | N'existe que pendant l'exécution |
| Un seul fichier | Plusieurs processus du même programme possibles |
1.2 Création d'un processus
Section intitulée « 1.2 Création d'un processus »La création d'un processus suit plusieurs étapes :
- Le système d'exploitation (SE) alloue de la mémoire pour le processus ;
- Le SE charge le code du programme en mémoire ;
- Le SE attribue un identifiant unique appelé PID (Process IDentifier) ;
- Le SE initialise le contexte du processus (registres, compteur ordinal, pile) ;
- Le processus est placé dans la file d'attente de l'ordonnanceur.
1.3 Attributs d'un processus
Section intitulée « 1.3 Attributs d'un processus »Chaque processus possède :
| Attribut | Description |
|---|---|
| PID | Identifiant unique (nombre entier) |
| PPID | PID du processus parent (celui qui l'a créé) |
| État | Prêt, en exécution, en attente, terminé |
| Priorité | Niveau de priorité pour l'ordonnancement |
| Mémoire | Espace mémoire alloué |
| Propriétaire | Utilisateur ayant lancé le processus |
1.4 Observer les processus
Section intitulée « 1.4 Observer les processus »ps aux # liste tous les processustop # vue en temps réelhtop # vue améliorée (si installé)kill 1234 # terminer le processus de PID 1234Gestionnaire des tâches (Ctrl + Maj + Échap)tasklist # en ligne de commandetaskkill /PID 1234 # terminer un processusimport osprint(f"PID du processus courant : {os.getpid()}")print(f"PID du processus parent : {os.getppid()}")2. Les états d'un processus
Section intitulée « 2. Les états d'un processus »Un processus passe par différents états au cours de sa vie :
┌──────────┐ Création ──► │ Prêt │ ◄──── Fin d'attente E/S └────┬─────┘ │ Élu par l'ordonnanceur ▼ ┌──────────┐ │ Élu │ ──── Terminaison ──► Fin │(exécution)│ └────┬─────┘ │ Demande d'E/S │ ou préemption ▼ ┌──────────┐ │ Bloqué │ │(en attente)│ └──────────┘| État | Description |
|---|---|
| Prêt | Le processus attend d'être sélectionné par l'ordonnanceur |
| Élu (en exécution) | Le processus utilise actuellement le processeur |
| Bloqué (en attente) | Le processus attend un événement (lecture disque, saisie clavier, réseau) |
| Terminé | Le processus a fini son exécution |
3. L'ordonnancement
Section intitulée « 3. L'ordonnancement »3.1 Pourquoi ordonnancer ?
Section intitulée « 3.1 Pourquoi ordonnancer ? »Un processeur ne peut exécuter qu'un seul processus à la fois (par cœur). Or, un système moderne peut avoir des dizaines, voire des centaines de processus actifs. L'ordonnanceur (scheduler) du SE décide quel processus obtient le processeur, et pour combien de temps.
3.2 Ordonnancement préemptif
Section intitulée « 3.2 Ordonnancement préemptif »Dans un système préemptif, l'ordonnanceur peut interrompre un processus en cours d'exécution pour en exécuter un autre. C'est le mode utilisé par tous les SE modernes.
Le processeur alterne très rapidement entre les processus, donnant l'illusion d'une exécution simultanée. On parle de pseudo-parallélisme ou de temps partagé.
3.3 Algorithmes d'ordonnancement
Section intitulée « 3.3 Algorithmes d'ordonnancement »Tourniquet (Round Robin) :
Chaque processus reçoit un quantum de temps (par exemple 20 ms). À la fin de son quantum, il est interrompu et placé en fin de file.
File d'attente : [P1] [P2] [P3]
Temps 0-20 ms : P1 s'exécuteTemps 20-40 ms : P2 s'exécuteTemps 40-60 ms : P3 s'exécuteTemps 60-80 ms : P1 s'exécute (retour en tête)...Avec priorités :
Chaque processus a un niveau de priorité. L'ordonnanceur choisit toujours le processus de plus haute priorité parmi ceux prêts. Les processus de même priorité sont gérés en tourniquet.
| Exemple | Priorité | Type |
|---|---|---|
| Gestion du clavier | Haute | Système |
| Navigateur Web | Moyenne | Utilisateur |
| Mise à jour en arrière-plan | Basse | Système |
3.4 Exemple déroulé
Section intitulée « 3.4 Exemple déroulé »Trois processus P1, P2, P3 avec un quantum de 3 unités de temps :
| Instant | Processus élu | P1 restant | P2 restant | P3 restant |
|---|---|---|---|---|
| 0-3 | P1 | 5 → 2 | 4 | 3 |
| 3-6 | P2 | 2 | 4 → 1 | 3 |
| 6-9 | P3 | 2 | 1 | 3 → 0 |
| 9-11 | P1 | 2 → 0 | 1 | terminé |
| 11-12 | P2 | terminé | 1 → 0 | terminé |
Durée totale : 12 unités de temps. Tous les processus ont pu progresser.
4. L'interblocage (deadlock)
Section intitulée « 4. L'interblocage (deadlock) »4.1 Ressources partagées
Section intitulée « 4.1 Ressources partagées »Les processus ont parfois besoin d'accéder à des ressources partagées : fichier, imprimante, zone mémoire, connexion réseau, etc. Quand une ressource est utilisée par un processus, les autres doivent attendre.
4.2 Situation d'interblocage
Section intitulée « 4.2 Situation d'interblocage »Un interblocage survient quand deux (ou plus) processus s'attendent mutuellement, chacun détenant une ressource dont l'autre a besoin. Aucun ne peut progresser.
┌──────────┐ ┌──────────┐│ P1 │ │ P2 ││ │ possède │ ││ détient ├──────────► Ressource A │ détient ├──────────► Ressource B│ │ │ ││ demande │ │ demande ││ ├──────────► Ressource B │ ├──────────► Ressource A│ │ attend │ │ attend└──────────┘ └──────────┘- P1 détient la ressource A et demande la ressource B ;
- P2 détient la ressource B et demande la ressource A ;
- Chacun attend que l'autre libère sa ressource → blocage définitif.
4.3 Analogie de la circulation
Section intitulée « 4.3 Analogie de la circulation »4.4 Conditions nécessaires (conditions de Coffman)
Section intitulée « 4.4 Conditions nécessaires (conditions de Coffman) »L'interblocage ne se produit que si toutes ces conditions sont réunies simultanément :
- Exclusion mutuelle : une ressource ne peut être utilisée que par un seul processus à la fois ;
- Détention et attente : un processus détient au moins une ressource et en attend une autre ;
- Non-préemption : une ressource ne peut pas être retirée de force à un processus ;
- Attente circulaire : il existe un cycle d'attente entre les processus.
4.5 Prévention de l'interblocage
Section intitulée « 4.5 Prévention de l'interblocage »| Stratégie | Principe |
|---|---|
| Ordre d'acquisition | Imposer un ordre fixe d'acquisition des ressources (tous les processus demandent A avant B) |
| Tout ou rien | Un processus demande toutes ses ressources d'un coup ; s'il n'obtient pas tout, il attend sans rien détenir |
| Détection et résolution | Le SE surveille les cycles d'attente et, s'il en détecte un, force un processus à libérer ses ressources |
| Temporisation | Si un processus attend trop longtemps, il libère ses ressources et recommence |
5. Processus en Python
Section intitulée « 5. Processus en Python »5.1 Créer un processus fils
Section intitulée « 5.1 Créer un processus fils »import os
pid = os.fork() # Unix uniquement
if pid == 0: print(f"Processus fils (PID = {os.getpid()})")else: print(f"Processus père (PID = {os.getpid()}, fils = {pid})")5.2 Utiliser le module multiprocessing
Section intitulée « 5.2 Utiliser le module multiprocessing »from multiprocessing import Processimport os
def tache(nom): print(f"Processus {nom} (PID = {os.getpid()})")
p1 = Process(target=tache, args=("A",))p2 = Process(target=tache, args=("B",))
p1.start()p2.start()p1.join()p2.join()
print("Les deux processus sont terminés.")À retenir
Section intitulée « À retenir »| Concept | Description |
|---|---|
| Processus | Instance en cours d'exécution d'un programme, identifiée par un PID |
| États | Prêt → Élu → Bloqué → Terminé |
| Ordonnanceur | Composant du SE qui décide quel processus s'exécute |
| Tourniquet | Algorithme d'ordonnancement avec quantum de temps fixe |
| Interblocage | Blocage mutuel de processus attendant chacun une ressource détenue par l'autre |
| Conditions de Coffman | Exclusion mutuelle, détention et attente, non-préemption, attente circulaire |
© 2026 Corentin Dupont - LyCode
Créé avec Astro Starlight