• Aucun résultat trouvé

Une interprétation topologique de la communication

4.3 Géométrie de la calculabilité asynchrone

4.3.1 Une interprétation topologique de la communication

4.3.1.1 Complexes et mémoire partagée

Il nous faut comprendre dans un premier temps comment les complexes simpliciaux permettent de modéliser la communication de processus par une mémoire partagée de façon satisfaisante. La correspondance se fera par trois constructions :

1. Le complexe d’entrée : un complexe simplicial qui représentera l’ensemble des états initiaux possibles d’un système pour une spécification de tâche donnée.

2. Le complexe de sortie : un complexe simplicial qui représentera les états du système correspondant à des résolutions de la tâche.

3. Le complexe de protocole : un complexe simplicial qui représentera les dif- férentes traces d’exécution possibles (voir définition 41 et section 4.3.1.3). Définition 47.

Le complexe d’entrée Itn d’une tâche donnée t, pour n processus est défini en

fonction des valeurs d’entrée possibles de la tâche.

Soit {1, . . . , n} l’ensemble des identifiants des processus, et Eil’ensemble des

valeurs que peut recevoir le processus pi pour traiter la tâche t.

— Les sommets de In

t sont étiquetés par tous les couples (i, x) tels que i ∈

{1, . . . , n} et x ∈ Ei.

— Les simplexes de dimension d de In

t sont étiquetés par tous les ensembles

de sommets {(i0, x0), . . . , (id, xd)} tels que ij 6= ij0 pour tous j, j0 ∈

{1, . . . , d}. Définition 48.

Le complexe de sortie Ont d’une tâche donnée t pour n processus est définie

Ces états sont définis comme un ensemble S d’ensembles {(1, v1), . . . , (n, vn)},

entièrement déterminé par t. — Les sommets de On

t sont étiquetés par tous les couples (pi, vi) apparaissant

dans les ensembles éléments de S.

— Les simplexes de dimension d de Ont sont étiquetés par tous les ensembles

{(pi0, vi0), . . . , (pid, vid)} inclus dans un ensemble élément de S tels que

ij 6= ij0 pour tous j, j0 ∈ {1, . . . , d} (sinon le simplexe est de dimension

inférieure).

Considérons la tâche de sortie quelconque donnée en 4.2.1.2, qui demande à tous les processus de partir avec une valeur entière et de retourner la valeur de l’un des processus avec l’identifiant de ce dernier, on peut construire les complexes d’entrée et de sortie comme suit, pour deux processus p0 et p1:

Les sommets de I2

t correspondent à l’ensemble {(p0, k0), (p1, k1) | k0, k1 ∈

N} et les simplexes sont soit des sommets, soit des arêtes qui sont de la forme {(p0, k0), (p1, k1)}.

Pour déterminer le complexe de sortie, il faut d’abord déterminer les valeurs correspondant à une résolution de la tâche. Pour que la tâche soit résolue, il faut et il suffit que les processus renvoient une valeur entière accompagnée de l’identifiant de p0 ou de p1. Les sommets de Ont sont donc tous les couples

(0, (i, vi)) et (1, (j, vj)) tels que i, j ∈ {0, 1} et vi, vj ∈ N. Les simplexes sont

soit des sommets, soit des arêtes de la forme {(0, (i, vi)), (1, (j, vj))}.

Les deux complexes sont infinis. Mais si l’on remplace N par {0, 1}, en demandant à ce que les entrées soient binaires, alors on peut donner une repré- sentation finie de In

t et de Otn comme en figure 4.8. Nous ne représentons pas

les étiquettes des simplexes de dimension 1, entendu qu’une arête entre deux sommets étiquetés respectivement par i et j est un simplexe d’étiquette {i, j}.

• • • • (p0, 0) (p1, 0) (p0, 1) (p1, 1) I2 t • • • • (p0, (0, 0)) (p1, (0, 0)) (p0, (0, 1)) (p1, (0, 1)) • • • • (p0, (1, 0)) (p1, (1, 0)) (p0, (1, 1)) (p1, (1, 1)) O2 t

Figure 4.8 – Un complexe d’entrée et un complexe de sortie pour la tâche de sortie quelconque, avec entrées binaires et exécutée par deux processus

On peut par exemple remarquer que par construction, aucun simplexe n’est de la forme {(pi, v), (pi, v0)}. En effet, cela correspondrait à un état initial ou

final dans lequel le même pi pourrait avoir deux valeurs distinctes, ce qui ne

correspond jamais à aucun état. On peut également vérifier que toutes les confi- gurations possibles sont représentées (les arêtes pointillées ont le même statut que les autres, et sont estompées pour la lisibilité). C’est-à-dire que dans O2

t qui

décrit les états de sortie acceptables pour la tâche de sortie quelconque. Chaque processus peut retourner soit sa propre valeur (0 ou 1), et dans ce cas son iden- tifiant, ce qui correspond aux sommets (pi, (i, v)) pour v ∈ {0, 1}, soit la valeur

de l’autre processus, avec son identifiant, ce qui correspond à (pi, (j, v)), pour

i 6= j et v ∈ {0, 1}. Et ces différentes possibilités ne sont pas exclusives : toutes

les configurations pour p0et p1sont compatibles, ce qui s’exprime effectivement par la présence d’arêtes entre chaque type de sommet.

4.3.1.2 Dimensions des simplexes et pannes

La dimension des simplexes dans les complexes d’entrée et de sortie corres- pond au nombre de processus qui participent. Tout simplexe de dimension 0 représente une configuration dans laquelle les processus associés aux sommets adjacents ne participent pas à l’exécution, sont tombés en panne.

Nous avons parlé des complexes d’entrée et de sortie, mais pas encore des complexes qui modélisent les exécutions. L’idée générale est qu’à une trace d’exé- cution τ , on fait correspondre un simplexe dans un complexe. Si le complexe comporte deux simplexes adjacents (d’intersection non vide), ils correspondent alors à deux exécutions observationellement équivalentes pour un ensemble de processus. Celui associé justement au simplexe correspondant à l’intersection en question.

Avant de définir le complexe de protocole, qui généralise cette idée, donnons quelques exemples. Considérons un système à deux processus p0 et p1, et deux traces d’exécution du protocole d’information pleine (figure 4.5) : σ = e0l0e1l1 et τ = e0e1l0l1. On remarque qu’à la suite de ces exécutions, l’état mémoire de p1 est le même (mêmes traces qu’en figures 4.3 et 4.4 auxquelles on peut se rapporter), alors que p0 a accès à la valeur transmise par p1 dans τ mais pas dans σ, ou il retient la valeur non définie ⊥. Dans la compréhension topologique de ces exécutions, nous allons les considérer comme deux simplexes distincts, mais à l’intersection desquels un simplexe de dimension inférieure correspondra à l’exécution amenant à l’état de p1commun à σ et à τ .

Cette exécution est donnée par la trace suivante : η = e0e1l1. Elle correspond à une panne de p0 avant la fin de son tour. Ainsi, à l’issue de l’exécution de η, le processus p0 « ne sait pas encore » s’il aura accès à la valeur de p1 ou non. Si oui, alors l’exécution continue dans τ , sinon dans σ. Mais dans η, l’action de

p0est interrompue avant une lecture de la mémoire globale.

La représentation de ces exécutions se fait alors par le complexe suivant :

• • •

p0 p1 p0

η

σ τ

On n’a volontairement pas encore donné la définition formelle du complexe, pour donner une intuition de la représentation des communications à l’œuvre ici.

4.3.1.3 Le complexe de protocole

Le complexe de protocole est une généralisation et une formalisation de l’idée que nous venons de présenter. La première définition vient de l’article fondateur de Herlihy et Shavit [HS99], nous considérons sa reformulation par Goubault, Mimram et Tasson [GMT18].

Définition 49 (Complexe de protocole).

— Les arêtes sont étiquetées par les paires (i, mi), où i ∈ {1, . . . , n} est

l’identifiant d’un processus pi, et où micorrespond à l’état de la mémoire

locale du processus pi.

— Les simplexes de dimension d sont étiquetés par des ensembles de la forme {(i0, mi0), . . . , (id, mid)} où ij6= ij0 pour tous j, j

0 ∈ {1, . . . , d}.

La mémoire locale correspond au contenu du registre propre à chaque pro- cessus à l’issue de l’exécution du protocole d’information pleine. Les simplexes de dimension inférieure à celle du complexe correspondent à des exécutions non terminées, où certains processus sont tombés en panne.

Le complexe de protocole pour un tour d’exécution et deux processus est représenté en figure 4.9. On omet le contenu de la valeur transmise, pour plus de généralité. Et, par exemple, l’étiquette correspondant à p0contenant dans sa mémoire locale la valeur transmise par p1 sera écrite (p0, h0, 1i) au lieu de (p0,

v0 v1 ). Si p0n’a pas accès à la valeur transmise par p1, on écrira (p0, h0, ⊥i). On se rappelle au passage qu’un processus à toujours accès à sa propre valeur, car le protocole d’information pleine exige d’écrire dans la mémoire partagée avant de lire cette dernière.

• • • •

(p0, h0, ⊥i)

(p1, h0, 1i) (p0, h0, 1i)

(p1, h⊥, 1i)

Figure 4.9 – Complexe de protocole, deux processus, un tour

Une propriété centrale du complexe de protocole, est que la subdivision chromatique standard en est un sous-complexe. En particulier, le complexe de la figure 4.9 est isomorphe à χ(∆1), la subdivision chromatique du 1-simplexe. Plus généralement, la subdivision itérée k fois correspond à une large classe des exécutions du protocole d’information pleine sur k tours. On illustre en figure 4.10 la subdivision chromatique du 2 simplexe, étiquetée par les états mémoire locale des trois processus p0, p1 et p2.

On remarque que les bords du complexe (pour une seule itération de la subdivision) correspondent à la subdivision du 1-simplexe, autrement dit, au complexe de protocole pour deux processus illustré en figure 4.9. Et il s’agit en effet des exécutions correspondant à l’action de deux processus, où celui associé au sommet opposé au segment subdivisé en question, est tombé en panne avant toute opération.

4.3.2

Le Théorème de la calculabilité asynchrone (Herlihy-