Le principe consiste à détecter, à intervalles réguliers, les attentes circulaires, puis de permettre la reprise par une action curative.
debut tant que vrai faire debut trouverAttenteCirculaire; traiterCycle; attendre delaiPeriode; fin fin
traiterCycle
utilise généralement une des deux méthodes suivantes :
Soit un système et son graphe d'allocation des ressources,
trouverAttenteCirculaire
est facilement implémentable :
debut tant qu'il existe un sommet sans prédécesseur faire debut enlever les arcs sortants de ce sommet; enlever le sommet; fin attenteCirculaire = non (graphe résultant est vide) fin
Il existe des ressources non distinguables (ex : un bloc du disque libre) pour le problème de l'interblocage. Dans ce cas, le graphe des allocations est complexe, et une représentation matricielle est plus aisée et plus efficace.
Un système est composé de processus et de
types de ressources. Le problème de l'interblocage est décrit par : un vecteur
des ressources existantes, une matrice
des ressources tenues, et une matrice
des requêtes.
On note
trouverAttenteCirculaire(E,T,R)
peut alors s'écrire :
debut
;
tant qu'il existe un processus
tel que
faire debut
;
;
fin
attenteCirculaire =
;
fin
représente les ressources disponibles. L'idée intuitive est donc : si le système satisfait la requête
, alors
peut terminer son exécution, et rendre ainsi les ressources
qu'il détient.
Soit un système composé de 3 processus et de 4 types de ressources.
,
,
.
L'algorithme trouverAttenteCirculaire(E,T,R)
donne :
Pour
.
L'algorithme trouverAttenteCirculaire(E,T,R)
donne :
Pour
.
L'algorithme trouverAttenteCirculaire(E,T,R)
donne :
trouverAttenteCirculaire
utilise soit un graphe, soit des matrices. Cette information peut être obtenue de deux façons :