Attente circulaire

Définition, exemples et bonnes pratiques

À retenir

  • C'est l'une des quatre conditions indispensables à l'apparition d'un interblocage (deadlock).
  • Elle se caractérise par une chaîne fermée de processus qui s'attendent mutuellement.
  • Sans intervention du système ou arrêt forcé d'un programme, le blocage est définitif.

L'attente circulaire est une situation de blocage total où plusieurs programmes (ou processus) se retrouvent coincés dans une boucle de dépendance. C'est comme si trois personnes étaient assises à une table : la première attend un outil tenu par la deuxième, la deuxième attend un outil tenu par la troisième, et la troisième attend celui que possède la première. Comme personne ne veut lâcher ce qu'il a avant d'avoir obtenu ce qu'il attend, tout le monde reste figé indéfiniment.

Étymologie

Traduction du concept anglophone circular wait. Le terme combine la notion de mise en pause d'un processus (« attente ») avec la forme géométrique d'un cycle (« circulaire »), illustrant que la chaîne de dépendance revient à son point de départ.

Exemples d'usage

  • Deux transactions dans une base de données : la première verrouille la fiche 'Client A' et demande la fiche 'Facture B', tandis que la seconde verrouille 'Facture B' et demande 'Client A'.
  • Dans un système d'exploitation, un logiciel attend que le lecteur DVD se libère pour finir d'écrire un fichier, alors que le pilote du lecteur DVD attend que ce même logiciel libère de la mémoire vive pour fonctionner.

Cas d'usage

Ce concept intervient principalement dans la conception des systèmes d'exploitation (gestion des ressources matérielles), le développement d'applications multi-tâches (multithreading) et la gestion des bases de données relationnelles.

Bonnes pratiques

Pour prévenir l'attente circulaire, la méthode la plus efficace est d'imposer un ordre strict de réquisition des ressources. Si tous les programmes demandent les ressources dans le même ordre (par exemple, toujours l'imprimante avant le scanner), un cycle de dépendance ne peut jamais se former.

Synonymes

cycle de dépendance interblocage circulaire

Antonymes

ordonnancement hiérarchique exécution séquentielle

Conseil

Si vous débutez en programmation, évitez de verrouiller plusieurs ressources simultanément. Si c'est indispensable, assurez-vous de toujours les solliciter dans un ordre logique constant (par exemple, par ordre alphabétique de leur nom) pour éviter de créer des boucles invisibles.

Questions fréquentes

Comment le système détecte-t-il une attente circulaire ?

Le système d'exploitation utilise souvent des algorithmes de détection de cycles dans un graphe de ressources.

L'attente circulaire est-elle un bug ?

Oui, c'est généralement considéré comme une erreur de conception dans la logique de gestion des ressources d'un logiciel.