Atomicité

Un article de Wikipédia, l'encyclopédie libre.

Les méthodes de synchronisation

Barrière de synchronisation - Futex - Moniteur

Mutex - Sémaphore - Spinlock

En informatique, une opération atomique est une opération qui n'est pas interruptible. Cela signifie que l'opération s'effectue en une seule fois et qu'aucun autre thread n'aura accès à la ressource processeur durant toute la durée de l'opération.

En règle générale, les instructions assembleur peuvent être considérées comme atomiques.

Par extension, il est possible de dire qu'une section critique protégée par une exclusion mutuelle est aussi atomique.

[modifier] Exemple d'instruction spéciale devant être atomique

L'instruction Test And Set est un exemple concret d'instruction devant être atomique. Cette instruction travaille sur une variable booléenne (ici notée V). Le fonctionnement de cette instruction est le suivant :

TEST_AND_SET(V) :
    C = non V
    V = Vrai
    retourner C

Une telle instruction (si elle est atomique) permet d'implémenter un algorithme d'exclusion mutuelle par attente active. En effet, il est possible de définir les protocoles d'entrée et de sortie suivants :

Entree :
   REPETER
      ne rien faire
   JUSQU'A TEST_AND_SET(Verrou)
SORTIE :
   Verrou = Faux -- Cette affectation est considérée comme atomique !

Le protocole d'entrée boucle tant que la variable Verrou est vrai. Si celle-ci est fausse, alors TEST_AND_SET retourne Vrai et modifie cette dernière variable. Le protocole de sortie fixe simplement la variable Verrou à faux ce qui autorise l'entrée d'une tâche dans la section critique.