Couplage fort (programmation concurrente)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour l’article homonyme, voir Couplage

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 | modifier le code]

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 | modifier le code]

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