Notion d'interblocage
Simulation :
Pour terminer, nous allons maintenant étudier le phénomène d'interblocage (deadlock en anglais).
Soit :
2 processus P1 et P2
2 ressources R1 et R2.
Initialement, les 2 ressources sont « libres » (utilisées par aucun processus).
Le processus P1 commence son exécution (état « élu »), il demande la ressource R1. Il obtient satisfaction puisque R1 est libre, P1 est donc dans l'état « prêt ». Pendant ce temps, le système a passé P2 à l'état « élu » : P2 commence son exécution et demande la ressource R2. Il obtient immédiatement R2 puisque cette ressource était libre. P2 repasse immédiatement à l'état « élu » et poursuit son exécution (P1 lui est toujours dans l'état prêt). P2 demande la ressource R1, il se retrouve dans un état « bloqué » puisque la ressource R1 a été attribuée à P1 : P1 est dans l'état « prêt », il n'a pas eu l'occasion de libérer la ressource R1 puisqu'il n'a pas eu l'occasion d'utiliser R1 (pour utiliser R1, P1 doit être dans l'état « élu »). P2 étant bloqué (en attente de R1), le système passe P1 dans l'état « élu » et avant de libérer R1, il demande à utiliser R2. Problème : R2 n'a pas encore été libéré par P2, R2 n'est donc pas disponible, P1 se retrouve « bloqué ».
Résumons la situation à cet instant : P1 possède la ressource R1 et se trouve dans l'état « bloqué » (attente de R2), P2 possède la ressource R2 et se trouve dans l'état « bloqué » (attente de R1)
Pour que P1 puisse poursuivre son exécution, il faut que P2 libère la ressource R2, mais P2 ne peut pas poursuivre son exécution (et donc libérer R2) puisqu'il est bloqué dans l'attente de R1. Pour que P2 puisse poursuivre son exécution, il faut que P1 libère la ressource R1, mais P1 ne peut pas poursuivre son exécution (et donc libérer R1) puisqu'il est bloqué dans l'attente de R2. Bref, la situation est totalement bloquée !
Cette situation est qualifiée d'interblocage (deadlock en anglais).
Il existe plusieurs solutions permettant soit de mettre fin à un interblocage (cela passe par l'arrêt d'un des 2 processus fautifs) ou d'éviter les interblocage, mais ces solutions ne seront pas étudiées ici.
Complément : Illustration en image de l'interblocage
Exemple : Exemple simplifié avec ParcourSup
Soient deux établissements A et B ainsi que deux élèves de terminale X et Y.
A possède une place sur liste principale et une place sur liste d'attente. Sa commission de recrutement a placé X en liste principale et Y en liste d'attente.
B possède aussi une seule place et classe Y en liste principale et X en liste d'attente.
X accepte provisoirement le vœu A mais garde sa place sur la liste d'attente de B car c'est son vœu préféré.
Y accepte provisoirement le vœu B mais garde sa place sur la liste d'attente de A car c'est son vœu préféré.
On voit bien l'interblocage entre X et Y qui souhaitent échanger mais ne peuvent le faire sans qu'un des deux ne refuse la seule réponse positive qu'il a reçu.
Merci à L. Gillet pour cet exemple éclairant !