Master Rseaux et Systmes Distribus RSD Algorithmique des
Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes et applications réparties Horloges logiques Badr Benmammar badr. benmammar@gmail. com
Plan q Partie 1 : Temps dans un système distribué q Temps logique q Chronogramme q Dépendance causale q Parallélisme logique q Délivrance q FIFO q Causale q Partie 2 : Horloges logiques q Estampille (horloge de Lamport) q Vectorielle (horloge de Mattern) q Matricielle 2
Partie 1 : Temps dans un système distribué 3
Temps dans un système distribué q Objectif : définir un temps global cohérent et « identique » (ou presque) pour tous les processus. q Créer un temps logique q Temps qui n’est pas lié à un temps physique. m 1 envoyé par P 1 vers P 4 à l’instant t H 1 P 1 H 2 m 3 P 2 m 1 m 2 m 4 envoyé par P 2 vers P 4 à l’instant t’ H 5 P 5 Quel est le lien entre t et t’ ? m 5 m 4 H 3 P 4 H 4 4
Temps logique q Exemple d’application : pouvoir préciser l’ordonnancement de l’exécution des processus et de leur communication. q En fonction des événements locaux des processus, des messages envoyés et reçus, on créé un ordonnancement logique. q Utiliser une horloge logique. 5
Chronogramme q Définition : décrit l’ordonnancement temporel des événements des processus et des échanges de messages. q Chaque processus est représenté par une ligne. q Trois types d’événements signalés sur une ligne : q Émission d’un message à destination d’un autre processus. q Réception d’un message venant d’un autre processus. q Événement interne dans l’évolution du processus. q Les messages échangés doivent respecter la topologie de liaison des processus via les canaux. 6
Chronogramme q Exemple : trois processus tous reliés entre eux par des canaux avec la possibilité de perte de message. q Règle de numérotation d’un événement : e. XY avec X le numéro du processus et Y le numéro de l’événement pour le processus, dans l’ordre croissant. P 1 e 12 e 13 e 14 e 15 e 16 m 1 m 3 m 4 e 22 P 2 m 5 e 23 e 21 e 24 e 25 m 2 m 7 P 3 e 31 e 32 e 33 e 34 e 35 temps 7
Exemples d’événements q Processus P 1 : q e 11 : événement d’émission du message m 1 à destination du processus P 2. q e 13 : événement interne au processus. q e 14 : réception du message m 4 venant du processus P 3. q Processus P 2 : message m 5 envoyé avant m 6 mais m 6 reçu avant m 5. q Processus P 3 : le message m 7 est perdu par le canal de communication. P 1 e 12 e 13 e 14 e 15 e 16 m 1 m 3 m 4 e 22 P 2 m 5 e 23 e 21 e 24 e 25 m 2 m 7 P 3 e 31 e 32 e 33 e 34 e 35 temps 8
Dépendance causale q Relation de dépendance causale : Il y a une dépendance causale entre 2 événements si un événement doit avoir lieu avant l’autre. q Notation : e → e'. q e doit se dérouler avant e'. q Si e → e', alors une des trois conditions suivantes doit être vérifiée pour e et e'. q Si e et e' sont des événements d’un même processus, e précède localement e'. q Si e est l’émission d’un message, e' est la réception de ce message. q Il existe un événement f tel que e → f et f → e'. q Ordonnancement des événements : q Les dépendances causales définissent des ordres partiels pour des ensembles d’événements du système. 9
Dépendance causale q q P 1 Sur l’exemple précédent, quelques dépendances causales autour de e 12. Localement : e 11 → e 12, e 12 → e 13. Sur message : e 12 → e 34. Par transitivité : e 12 → e 35 (car e 12 → e 34 et e 34 → e 35). q e 11 → e 13 (car e 11 → e 12 et e 12 → e 13). e 11 e 12 e 13 e 14 e 15 e 16 m 1 m 3 m 4 e 22 P 2 m 5 e 23 e 21 e 24 e 25 m 2 m 7 P 3 e 31 e 32 e 33 e 34 e 35 temps 10
Dépendance causale q Question : dépendance causale entre e 12 et e 32 ? q A priori non : absence de dépendance causale. q Des événements non liés causalement se déroulent en parallèle. P 1 e 12 e 13 e 14 e 15 e 16 m 1 m 3 m 4 e 22 P 2 m 5 e 23 e 21 e 24 e 25 m 2 m 7 P 3 e 31 e 32 e 33 e 34 e 35 temps 11
Parallélisme logique q e et e' sont en dépendance causale ⇔ ((e → e') ou (e' → e)). q Relation de parallélisme : ||. q e || e' ⇔ ┐((e → e') ou (e' → e)). Négation de la dépendance causale. q Parallélisme logique : ne signifie pas que les 2 événements se déroulent simultanément mais qu’il peuvent se dérouler dans n’importe quel ordre 12
Délivrance Processus E Processus R Délivrance Émission Tampon Emission Tampon Réception Canal q La délivrance d’un message : l’opération consistant à le rendre accessible aux applications clientes (ex: rôle du protocole TCP). 13
Délivrance FIFO vs délivrance causale q Délivrance FIFO : cette propriété assure que si deux messages sont envoyés successivement de Pi vers un même destinataire Pj, le premier sera délivré à Pj avant le second. Pi Pj m 1 m 2 Exemple : communication avec les sockets q Délivrance causale : cette propriété étend la précédente à des communications à destination d’un même processus en provenance de plusieurs autres. q Elle assure que si l’envoi du message m 1 par Pi à destination de Pk précède (causalement) l’envoi du message m 2 par Pj à destination de Pk, le message m 1 sera délivré avant le message m 2 à Pk. Pi m 1 Pj m 2 Pk 14
Partie 2 : Horloges logiques 15
Horloges logiques q Principe : datation de chacun des événements du système avec respect des dépendances causales entre événements. q 3 familles d’horloge : q Estampille (horloge de Lamport) : une donnée par événement. q Vectorielle (horloge de Mattern) : un vecteur par événement. q Matricielle : une matrice par événement. 16
Horloge de Lamport 17
Horloge de Lamport q Introduit en 1978 par Leslie Lamport. q C’est le premier type d’horloge logique introduit en informatique. q Une date (estampille) est associée à chaque événement. q estampille représente un couple (i, nb). q i : numéro du processus. q nb : numéro d’événement. Représente le temps de l’horloge logique. 18
Horloge de Lamport q Création du temps logique : q Localement, chaque processus Pi possède une horloge locale logique Hi, initialisée à 0. q Sert à dater les événements. q Pour chaque événement local de Pi. q Hi = Hi + 1 : on incrémente l’horloge locale. q L’événement est daté localement par Hi. q Émission d’un message par Pi. q On incrémente Hi de 1 puis on envoie le message avec (i, Hi) comme estampille. q Réception d’un message m avec estampille (i, nb) q Hj = max(Hj, nb) +1 et marque l’événement de réception avec Hj. Temps de l’horloge locale dans Pj 19
Horloge de Lamport et dépendance causale q Exemple 1 : Echange de messages entre 2 processus. P 1 e 12 e 11 m 2 P 2 e 21 e 22 q Les dépendances causales : e 11 → e 12, e 11 → e 22, e 21 → e 12. q Absence de dépendance causale entre e 11 et e 21. q Parallélisme logique entre e 11 et e 21. q L’horloge de Lamport respecte la dépendance causale : q (e → e') ⇒ (H(e) < H(e')). q Exemple : (e 11 → e 12) ⇒ (H(e 11) < H(e 12)). 20
Horloge de Lamport q Créer un temps logique à l’aide de l’horloge de Lamport. Initialisation P 1 (1, 0) (1, 1) e 11 Horloge : H 1 (1, 2) e 12 <m 1, (1, 1)> P 2 (2, 1) <m 2, (2, 1)> (2, 2) Horloge : H 2 (2, 0) e 22 e 21 q Relation importante : H(s, nb) < H(s' , nb') si (nb < nb') ou (nb = nb' et s < s'). q Ordonnancement global : (1, 1) (1, 2) (2, 1) q Résultat : e 11, e 21, e 12, e 22. q H(e 11) < H(e 21) < H(e 12) < H(e 22). (2, 2) 21
Horloge de Lamport q Ordonnancement global : e 11, e 21, e 12, e 22. q H(e 11) < H(e 21) < H(e 12) < H(e 22). q L’horloge de Lamport respecte la dépendance causale : q (e → e') ⇒ (H(e) < H(e')). q Selon l’horloge : H(e 11) < H(e 21). q Pourtant, il y a une absence de dépendance causale entre e 11 et e 21. q Pour résumé : q L’horloge de Lamport respecte la dépendance causale : q (e → e') ⇒ (H(e) < H(e')). q Mais pas la réciproque : q (H(e) < H(e')) ⇒ (e → e'). 22
Horloge de Lamport q Exemple 2 : chronogramme avec ajouts des estampilles. P 1 e 13 e 12 m 3 m 1 e 14 e 23 e 24 e 21 m 2 P 3 m 6 m 4 e 22 P 2 e 31 e 15 m 5 e 32 e 33 e 34 e 35 23
Horloge de Lamport q Exemple 2 : chronogramme avec ajouts des estampilles. P 1 (1, 0) e 11 m 3 m 1 (2, 0) e 14 m 6 e 23 e 24 e 21 m 2 (3, 0) e 31 e 15 m 4 e 22 P 3 e 12 m 5 e 32 e 33 e 34 e 35 24
Horloge de Lamport q Exemple 2 : chronogramme avec ajouts des estampilles. P 1 (1, 2) e 12 (1, 1) (1, 0) e 11 (1, 3) e 13 e 14 <m 3, (1, 2)> <m 1, (1, 1)> (2, 0) e 23 e 22 P 2 e 15 e 24 e 21 (3, 0) P 3 e 31 e 32 e 33 e 34 e 35 25
Horloge de Lamport q Exemple 2 : chronogramme avec ajouts des estampilles. P 1 (1, 2) e 12 (1, 1) (1, 0) e 11 (1, 3) e 13 e 14 <m 3, (1, 2)> <m 1, (1, 1)> (2, 0) e 23 e 22 P 2 e 15 e 24 e 21 (2, 2) (3, 0) P 3 e 31 e 32 e 33 e 34 e 35 26
Horloge de Lamport q Exemple 2 : chronogramme avec ajouts des estampilles. P 1 (1, 2) e 12 (1, 1) (1, 0) e 11 <m 3, (1, 2)> <m 1, (1, 1)> (2, 0) e 14 e 23 e 24 e 21 (2, 2) <m 2, (3, 1)> (3, 0) (3, 1) (3, 2) e 31 e 15 <m 4, (3, 3)> e 22 P 3 (1, 3) e 13 e 32 (3, 3) e 33 (3, 4) e 34 <m 5, (3, 5)> (3, 5) e 35 27
Horloge de Lamport q Exemple 2 : chronogramme avec ajouts des estampilles. P 1 (1, 2) e 12 (1, 1) (1, 0) e 11 <m 3, (1, 2)> <m 1, (1, 1)> e 31 e 15 (2, 6) e 23 e 24 e 21 (2, 2) <m 2, (3, 1)> (3, 0) (3, 1) (3, 2) P 3 (1, 4) e 14 <m 4, (3, 3)> (2, 3) e 22 (2, 0) P 2 (1, 3) e 13 e 32 (3, 3) e 33 (3, 4) e 34 <m 5, (3, 5)> (3, 5) e 35 28
Horloge de Lamport q Exemple 2 : chronogramme avec ajouts des estampilles. P 1 (1, 1) (1, 0) e 11 (1, 2) e 12 <m 3, (1, 2)> <m 1, (1, 1)> e 31 (1, 8) e 15 <m 6, (2, 7)> (2, 6) e 23 e 24 (2, 7) e 21 (2, 2) <m 2, (3, 1)> (3, 2) (3, 0) (3, 1) P 3 (1, 4) e 14 <m 4, (3, 3)> (2, 3) e 22 (2, 0) P 2 (1, 3) e 13 e 32 (3, 3) e 33 (3, 4) e 34 <m 5, (3, 5)> (3, 5) e 35 q Pour e 11, e 12, e 13. . . : incrémentation de +1 de l’horloge locale. q Date de e 23 : 6 car le message m 5 reçu avait une valeur de 5 et l’horloge locale est seulement à 3 (max (3, 5)+1). q Date de e 34 : 4 car on incrémente l’horloge locale vu que sa valeur est supérieure à celle du message m 3 (max (3, 2)+1). 29
Horloge de Lamport q Ordonnancement global : q Via Hi, on ordonne tous les événements du système entre eux. q Ordre total, noté e << e' : e s’est déroulé avant e'. q Soit e événement de Pi et e' événement de Pj : q e << e' ⇔ (Hi(e) < Hj(e')) ou (Hi(e) = Hj(e') avec i < j). q Localement (si i = j), Hi donne l’ordre des événements du processus. q Les 2 horloges de 2 processus différents permettent de déterminer l’ordonnancement des événements des 2 processus. q Si égalité de la valeur de l’horloge, le numéro du processus est utilisé pour les ordonner. 30
Horloge de Lamport P 1 (1, 1) (1, 0) e 11 (1, 2) e 12 <m 3, (1, 2)> <m 1, (1, 1)> (2, 6) e 23 e 24 (2, 7) e 32 e 31 (1, 8) e 15 <m 6, (2, 7)> e 21 (2, 2) <m 2, (3, 1)> (3, 2) (3, 0) (3, 1) P 3 (1, 4) e 14 <m 4, (3, 3)> (2, 3) e 22 (2, 0) P 2 (1, 3) e 13 (3, 3) e 33 (3, 4) e 34 <m 5, (3, 5)> (3, 5) e 35 q Ordre total global obtenu pour l’exemple : (1, 1) (3, 1) (1, 4) (1, 3) (1, 2) (2, 3) (3, 2) (3, 3) (1, 8) (2, 6) (2, 7) (3, 4) (3, 5) e 11 << e 31 << e 12<< e 21 << e 32 << e 13 << e 22 << e 33 << e 14 << e 35 << e 23 << e 24 << e 15. 31
Utilité de l’horloge de Lamport Faire l’ordonnancement global des événements dans un système distribué. 32
Horloge de Mattern 33
Horloge de Mattern q Introduit indépendamment en 1988 par Colin Fidge et Friedemann Mattern. q Horloge qui assure la réciproque de la dépendance causale : q H(e) < H(e') ⇒ (e → e'). q Permet également de savoir si 2 événements sont parallèles (non dépendants causalement). q Ne définit par contre pas un ordre total global. q Principe : q Utilisation de vecteur V de taille égale au nombre de processus. q Localement, chaque processus Pi a un vecteur Vi. q Un message est envoyé avec un vecteur de date. q Pour chaque processus Pi, chaque case Vi[j] du vecteur contiendra des valeurs de l’horloge du processus Pj. 34
Horloge de Mattern q Fonctionnement de l’horloge : q Initialisation : pour chaque processus Pi, Vi =(0, . . . , 0). q Pour un processus Pi, à chacun de ses événements (local, émission, réception) : Vi [ i ] = Vi [ i ] + 1. q Incrémentation du compteur local d’événement (garder les autres compteurs si événement local ou émission). q Si émission d’un message, alors Vi est envoyé avec le message. q Pour un processus Pi, à la réception d’un message m contenant un vecteur Vm provenant du processus Pj, on met à jour les cases k ≠ i de son vecteur local Vi. q ∀ k ≠ i : Vi [ k ] = max (Vm [ k ], Vi [ k ]). q Mémorise le nombre d’événements sur Pj qui doivent se dérouler avant la réception du message sur Pi. q La réception de ce message sur Pi dépend causalement de tous ces événements sur Pj. 35
Horloge de Mattern q Même exemple que pour horloge de Lamport : (0, 0, 0) P 1 (1, 0, 0) e 11 (2, 0, 0) e 12 <m 1, (1, 0, 0)> P 2 (0, 0, 0) P 3 (3, 0, 0) e 13 <m 3, (2, 0, 0)> (1, 2, 1) e 22 (4, 0, 3) e 14 <m 6, (2, 4, 5)> <m 4, (0, 0, 3)> (2, 3, 5) e 23 e 24 (2, 4, 5) e 21 (1, 1, 0) (0, 0, 0) <m 2, (0, 0, 1)> (0, 0, 1) (0, 0, 2) e 31 (5, 4, 5) e 15 e 32 (0, 0, 3) e 33 (2, 0, 4) e 34 <m 5, (2, 0, 5)> (2, 0, 5) e 35 q V(e 23) = (2, 3, 5) : (2 relatif à P 1, 3 à P 2, 5 à P 3). q 3 = 2+1 (Incrémentation du compteur local). 3ème évent dans P 2. q 2 =max (2, 0). 2 évents dans P 1 (e 11 et e 12) qui sont en dépendance causale par rapport à l’évent e 23. q 5 =max (5, 3). 5 évents dans P 3 (e 31, e 32, e 33, e 34 et e 35) qui sont en 36 dépendance causale par rapport à l’évent e 23.
Horloge de Mattern q Relation d’ordre partiel sur les dates ( < ) : q V ≤ V' défini par ∀ i : V[ i ] ≤ V'[ i ]. q V < V' défini par V ≤ V' et ∃j tel que V [ j ] < V' [ j ]. q V || V' défini par ┐(( V < V' ) ou ( V' < V )). q Dépendance et indépendance causales : q Horloge de Mattern assure les propriétés suivantes, avec e et e' deux événements et V(e) et V(e') leurs datations. q V(e) < V(e') ⇒ e → e'. q Si deux dates sont ordonnées, on a forcément dépendance causale entre les événements datés. q V(e) || V(e') ⇒ e || e'. q Si il n’y a aucun ordre entre les 2 dates, les 2 événements sont indépendants causalement (les 2 événements sont en parallèle). 37
Horloge de Mattern q Retour sur l’exemple : q V(e 13) = (3, 0, 0), V(e 14) = (4, 0, 3), V(e 15) = (5, 4, 5). q V(e 13) < V(e 14) donc e 13 → e 14. q V(e 14) < V(e 15) donc e 13 → e 15. q V(e 35) = (2, 0, 5) et V(e 23) = (2, 3, 5). q V(e 35) < v(e 23) donc e 35 → e 23. q L’horloge de Mattern respecte les dépendances causales des événements ainsi que la réciproque. q Horloge de Lamport respecte uniquement les dépendances causales. q V(e 32) = (0, 0, 2) et V(e 13) = (3, 0, 0). q On a ni V(e 32) < V(e 13) ni V(e 13) < V(e 32) donc e 32 || e 13. q L’horloge de Mattern respecte les indépendances causales. 38
État Global q État global : état du système à un instant donné. q Buts de la recherche d’états globaux : q Trouver des états cohérents à partir desquels on peut reprendre un calcul distribué en cas de plantage du système. q Défini à partir de coupures. q Coupure : photographie à un instant donné de l’état du système. q Définit les événements appartenant au passé et au futur par rapport à l’instant de la coupure. 39
Coupure q Définition : q Calcul distribué = ensemble E d’événements. q Coupure C est un sous-ensemble fini de E tel que : q Soit a et b deux événements du même processus : ((a ∈ C) et (b → a)) ⇒ (b ∈ C). q Si un événement d’un processus appartient à la coupure, alors tous les événements locaux le précédant y appartiennent également. 40
Exemple de coupure e 11 P 1 e 13 e 12 m 3 m 1 e 14 e 23 e 24 e 21 m 2 P 3 m 6 m 4 e 22 P 2 e 31 e 15 m 5 e 32 Passé e 33 e 34 Coupure e 35 Futur q Coupure = ensemble {e 11, e 12, e 13, e 21, e 22, e 23, e 31, e 32, e 33, e 34}. 41
Etat associé à une coupure q Si le système est composé de N processus, l’état associé à une coupure est défini au niveau d’un ensemble de N événements (e 1, e 2, . . . ei, . . . e. N), avec ei événement du processus Pi tel que : q∀i, ∀e∈C: q (e événement du processus Pi ) ⇒ (e → ei). q L’état est défini à la frontière de la coupure : l’événement le plus récent pour chaque processus. 42
Exemple de coupure e 11 P 1 e 13 e 12 e 14 m 3 m 1 e 23 e 24 e 21 m 2 P 3 m 6 m 4 e 22 P 2 e 31 e 15 m 5 e 32 e 33 e 34 Passé Coupure e 35 Futur q État de la coupure = (e 13, e 23, e 34). 43
Coupure cohérente q Coupure cohérente : coupure qui respecte les dépendances causales des événements du système et pas seulement les dépendances causales locales à chaque processus. q Soit a et b deux événements du système : q ((a ∈C) et (b → a)) ⇒ (b ∈ C). q Coupure cohérente : aucun message ne vient du futur. q État cohérent : État associé à une coupure cohérente. q Permet par exemple une reprise sur faute. 44
Exemple de coupure non cohérente e 11 P 1 e 13 e 12 m 3 m 1 e 14 e 23 e 24 e 21 m 2 P 3 m 6 m 4 e 22 P 2 e 31 e 15 m 5 e 32 Passé e 33 e 34 Coupure C 1 e 35 Futur q Coupure C 1 : non cohérente car : e 23 ∈ C 1 et e 35 → e 23 mais e 35 ∉ C 1. q La réception de m 5 est dans la coupure mais pas son émission. q m 5 vient du futur par rapport à la coupure. 45
Exemple de coupure cohérente q Coupure C 2 : cohérente. P 1 e 13 e 12 m 3 m 1 e 14 e 23 e 24 e 21 Coupure C 2 m 2 P 3 m 6 m 4 e 22 P 2 e 31 e 15 m 5 e 32 Passé e 33 e 34 e 35 Futur 46
Datation coupure q Horloge de Mattern permet de dater la coupure. q Soit N processus, C la coupure, ei l’événement le plus récent pour le processus Pi, V(ei) la datation de ei et V(C) la datation de la coupure. q V(C) = max ( V(e 1), . . . , V(e. N) ) : q∀ i : V(C)[ i ] = max ( V(e 1)[ i ] , . . . , V(e. N)[ i ] ). q Pour chaque valeur du vecteur, on prend le maximum des valeurs de tous les vecteurs des N événements pour le même indice. q Permet également de déterminer si la coupure est cohérente. q Cohérent si V(C) = (V(e 1)[ 1 ], . . . , V(ei)[ i ], . . . , V(e. N) [ N ]). 47
Datation coupure q Datation des coupures de l’exemple : q Coupure C 2 : état = (e 13, e 22, e 33). q V(e 13) = (3, 0). q V(e 22) = (1, 2, 1). q V(e 33) = (0, 3). q V(C) = (max(3, 1, 0), max(0, 2, 0), max(0, 1, 3)) = (3, 2, 3). q Coupure cohérente car V(C)[1] = V(e 13)[1], V(C)[2] = V(e 22)[2], V(C)[3] = V(e 33)[3]. q Coupure C 1 : état = (e 13, e 23, e 34). q V(e 13) = (3, 0, 0). q V(e 23) = (2, 3, 5). q V(e 34) = (2, 0, 4). q V(C) = (max(3, 2, 2), max(0, 3, 0), max (0, 5, 4)). q Non cohérent car V(C)[3] ≠ V(e 34)[3]. q D’après la date de e 23, e 23 doit se dérouler après 5 événements de P 3 or e 34 n’est que le quatrième événement de P 3. Un événement de P 3 dont e 23 dépend causalement 48 n’est donc pas dans la coupure (il s’agit de e 35 se déroulant dans le futur).
Utilité de l’horloge de Mattern Validation de la cohérence d’un état global. Savoir si 2 événements sont en parallèle ou en dépendance causale. 49
Horloge matricielle 50
Horloge matricielle q n processus : matrice M de (n x n) pour dater chaque événement. q Sur processus Pi : q Ligne i : informations sur événements de Pi : Mi [ i , i ] : nombre d’événements réalisés par Pi. q Mi [ i , j ] : nombre de messages envoyés par Pi à Pj (avec j ≠ i). q Ligne j (avec j ≠ i) : q Mi [ j , j ] : nombre d’événements que l’on connaît sur Pj. q Mi [ j , k ] : nombre de messages que l’on sait que Pj a envoyé à Pk (avec j ≠ k). q Avec 3 processus : q Nombre de messages que l’on sait que P 1 a envoyé à P 3 Nombre d’événements que l’on connaît sur P 1 1 2 Nombre de messages envoyés par P 2 à P 1 1 2 3 Informations sur événements de P 2 3 Nombre de messages envoyés par P 2 à P 3 Nombre d’événements réalisés par P 2 51
Exemple d’application q Considérons un système contenant 3 processus. Tous les processus possèdent des horloges logiques matricielles. q Supposons que l’horloge matricielle HM 3 du processus 3 est HM 3 = 6 2 2 1 1 5 2 1 7 q A quoi correspond l’élément de l’horloge matricielle HM 3 [3, 1], pour le processus 3? q Même question pour les éléments HM 3 [1, 3], HM 3 [2, 3] pour le processus 3. q Le processus 3 reçoit le message 8 2 m en 3 provenance du processus 1. L’estampille du message m est EMm = 2 9 2 1 1 3 q Que peut déduire le processus 3 par rapport aux éléments EMm [1, 3], EMm [2, 3] ? q Le processus 3 peut-il délivré le message m (délivrance causale) ? Justifier votre réponse. 52
Utilité de l’horloge matricielle Assurer la délivrance causale de messages entre plusieurs processus. 53
- Slides: 53