Couplage fort (programmation concurrente)

Le couplage fort se produit lorsqu'un algorithme réalise un passage explicite de la main (flux de contrôle) entre les fils d'exécution (thread) souhaitant entrer dans une section critique. Dans un algorithme sans couplage fort, l'entrée dans la section critique ne dépend pas de la sortie d'une tâche spécifique, mais simplement du fait que la section n'est pas utilisée.

Exemples de méthodes de protection d'une section critique avec couplage fort

modifier

L'algorithme suivant présente un algorithme d'accès à une section critique pour deux tâches. Le paramètre d'entrée est le numéro de la tâche (index à base zéro). La variable AUTORISE sert de verrou d'accès. Elle vaut zéro(0) au début de l'exécution du système.

ENTRER(i) :
   TANTQUE AUTORISE<>i FAIRE
      rien
   FIN TANTQUE
SORTIR(i) :
   AUTORISE=1-AUTORISE

La tâche zéro(0) passe explicitement la main à la tâche un(1) qui en fait de même pour la tâche zéro(0), les deux tâches accèdent à une ressource commune (ressource critique) et elles s'exécutent en exclusion mutuelle. Le couplage fort implique que l'entrée d'une des tâches dans la section critique dépend de la sortie de l'autre, cette solution est une cause fréquente d'interblocage.

En plus d'induire un couplage fort, cet algorithme induit aussi de l'attente active. Par contre, cette situation n'est pas nécessaire. En effet, il est possible de réaliser un couplage fort sans attente active.

Voir aussi

modifier
  • Luigi Zaffalon, Programmation concurrente et temps réel avec ADA 95, Presses polytechniques et universitaires romandes, Lausanne, 1999