Partie 2 : Gestion des processus et des ressources¶
Programme officiel (B.O.)¶
B.O. spécial n° 8 du 25 juillet 2019 - NSI Terminale
| Contenus | Capacités attendues | Commentaires |
|---|---|---|
| Gestion des processus et des ressources par un système d'exploitation. | Décrire la création d'un processus, l'ordonnancement de plusieurs processus par le système. Mettre en évidence le risque de l'interblocage (deadlock). | À l'aide d'outils standard, il s'agit d'observer les processus actifs ou en attente sur une machine. Une présentation débranchée de l'interblocage peut être proposée. |
1. La notion de processus¶
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 |
Exemple
Si on ouvre trois fenêtres du navigateur Firefox, il y a un seul programme Firefox installé mais trois processus Firefox en cours d'exécution.
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¶
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¶
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¶
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¶
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¶
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écute
Temps 20-40 ms : P2 s'exécute
Temps 40-60 ms : P3 s'exécute
Temps 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é¶
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)¶
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¶
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¶
Analogie du carrefour
Quatre voitures arrivent en même temps à un carrefour sans feu ni priorité. Chacune attend que celle de droite passe d'abord. Personne ne bouge → interblocage.
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¶
| 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¶
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¶
from multiprocessing import Process
import 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¶
| 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 |