#algorithmes #fr #distributedalgorithms #sorbonne
Horloge matricielle
- \(T = \mathbb{N}^{N^2}\)
- chaque processus gère une matrice \(MT_i\) de taille \(N^2\).
- \(MT_i[i,i]\): nombre d'événements du processus \(i\).
- \(MT_i[i,*]\): nombre de messages envoyés par \(i\) aux autres.
- \(\text{diag}(MT_i)\): nombre d'événements locaux des autres sites dont \(i\) a la connaissance = horloge vectoriel du processus \(i\).
- \(MT_i[j,k]\): nombre de messages émis par \(j\) à \(k\) dont \(i\) a connaissance.
algorithme de mise à jour
- Pour le processus \(i\):
- à chaque événement local: \(MT_i[i,i] = MT_i[i,i] + 1\)
- à chaque émission d'un message \(m\) vers \(j\): \(MT_i[i,i] = MT_i[i,i] + 1\) et \(MT_i[i,j] = MT_i[i,j] + 1\)
- à chaque réception d'un message \(m\) émis par \(j\), il faut s'assurer que:
- tous les messages envoyés antérieurement par \(j\) à \(i\) ont été reçus
- tous les messages reçus par \(i\) et dont l'envoi de \(m\) depend causalement ont bien été reçu
considerations
- Très coûteux en espace, sur les messages et en calcul
- Le processus \(i\) sait que tous les autres processus \(p_j\) savent que le temps local de chaque \(p_k\) a progressé jusqu'au moins \(t\): \(\min(MT_i[k,l])\geq t\)
- permet d'implementer FIFO.