NSI (terminale) · Chapitre 13 · Exercice de TD
Détecter un interblocage
Systèmes d'exploitation et processus · niveau 3 (difficile)
Énoncé
Détecter un interblocage.
Deux processus utilisent deux ressources, un verrou A et un verrou B :
# Processus P1 # Processus P2
verrou_A.acquerir() verrou_B.acquerir()
verrou_B.acquerir() verrou_A.acquerir()
# section critique # section critique
verrou_B.liberer() verrou_A.liberer()
verrou_A.liberer() verrou_B.liberer()
Montrer qu'un interblocage est possible, puis proposer une correction.
Corrigé
Scénario d'interblocage : supposons l'entrelacement suivant.
- P1 acquiert A.
- P2 acquiert B.
- P1 demande B : bloqué (B détenu par P2).
- P2 demande A : bloqué (A détenu par P1).
On a une attente circulaire : P1 attend B (tenu par P2) et P2 attend A (tenu par P1). Les quatre conditions de Coffman sont réunies : c'est un interblocage.
Correction : imposer un ordre global d'acquisition des verrous, par exemple toujours acquérir A avant B. Il suffit de réécrire P2 pour qu'il acquière A puis B (comme P1). L'attente circulaire devient impossible, donc l'interblocage aussi.
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 8 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
Sans compte : le cours, le premier QCM, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.