L'interblocage
Que se passe-t-il quand plusieurs processus s'attendent mutuellement, pour toujours ? Le dîner des philosophes, un graphe, et comment éviter le blocage.
Objectifs de la séance
Mettre en évidence le risque d'interblocage entre plusieurs processus, le représenter avec un graphe, et connaître des stratégies pour l'éviter.
Le dîner des philosophes
Cinq philosophes autour d'une table ronde, cinq fourchettes (une entre chaque paire de voisins). Pour manger, chacun a besoin de ses deux fourchettes.
Si les 5 philosophes prennent tous leur fourchette gauche en même temps, que se passe-t-il ?
Qu'est-ce que l'interblocage ?
Un interblocage (deadlock) est une situation dans laquelle plusieurs processus s'attendent mutuellement pour obtenir des ressources, si bien qu'aucun d'entre eux ne peut progresser.
Le graphe d'attente
On représente la situation par un graphe : processus et ressources sont des sommets. Une flèche processus → ressource signifie « attend » ; une flèche ressource → processus signifie « est détenue par ».
Un cycle à 2 processus
P1 détient R1 et attend R2. P2 détient R2 et attend R1.
Le cycle P1 → R2 → P2 → R1 → P1 se referme : il y a interblocage.
Comment éviter l'interblocage ?
- Ordre total sur les ressources : chaque processus doit toujours demander ses ressources dans le même ordre (ex. toujours la fourchette de plus petit numéro d'abord).
- Limiter les demandes simultanées : restreindre le nombre de processus pouvant demander des ressources en même temps.
- Détecter puis résoudre : le système vérifie périodiquement l'existence d'un cycle dans le graphe d'attente, et interrompt un processus si besoin.
Si le philosophe n°5 prend sa fourchette de droite en premier, l'interblocage initial est-il encore possible ?
À toi de jouer
1. Condition nécessaire pour qu'un interblocage se produise ?
2. Exemple avec deux imprimantes partagées
Exercices gradués
Explique ce qu'est un interblocage, en une ou deux phrases, avec tes propres mots.
P1 détient R1 et R2. P2 attend R1. Y a-t-il interblocage ? Justifie avec le graphe.
Voir la correction
Propose un scénario à 4 processus et 4 ressources provoquant un interblocage, dessine son graphe, puis explique comment l'éviter avec l'ordre total sur les ressources.