Académique Documents
Professionnel Documents
Culture Documents
Systèmes Distribués
Boulekhmir Abdessamed
Systèmes Distribués
Communication de groupes – Protocoles de diffusion – Appels de
procédures – Mémoire Distribuée- Modèles de Cohérence
Introduction
Partie I : Communication de groupe
Partie II : Protocoles de diffusion
Partie III : Appel de procédures
Partie IV : Mémoire partagée
Conclusion
Systèmes Distribués
Introduction .
Qu’est ce qu’un système distribué ?
Une propriété importante des systèmes distribués est que la distribution est
généralement cachée pour l’utilisateur et les programmeurs de l’application. Il préfère voir
l'ensemble comme un seul et unique système et ainsi cacher la complexité de la distribution
le plus possible et augmenter la transparence du système distribué. Cela permet de
développer le plus possible les applications de la même façon que les systèmes centralisés.
I- Communication de groupes :
Est une méthode de diffusion de l'information d'un émetteur (source unique) vers un
groupe (plusieurs supports/medias). On l’appelle aussi diffusion multipoint, multicast
ou bien encore diffusion de groupe.
Systèmes Distribués
Dans un système centralisé, les problèmes de synchronisation sont résolus par des
sémaphores :
Régions critiques.
Exclusion mutuelle.
Dans les systèmes répartis, le fait qu’il n’y ait pas de mémoire partagé, les sémaphores
(variables partagées) ne peuvent pas exister.
L’ordre de réception des messages doit être le même que celui d’émission.
Si on suppose que les horloges des processus sont synchronisées il suffit d’inclure la
date d’émission comme identifiant.
15h10
16h01
Remarque : L’ordre absolu est un ordre consistant + l’ordre de réception doit être le
même que celui de l’émission.
L'algorithme ABCAST décrit ici a été proposé par Birman (1987) pour permettre une
délivrance uniforme sur tous les sites (c'est-à-dire dans le même ordre sur tous les sites)
de tous les messages envoyés à un groupe (ouvert ou fermé). Il utilise un mécanisme
d'estampillage scalaire. Il s'agit d'un protocole de validation à deux phases.
Chaque membre du groupe dispose d'une horloge logique et gère une file d'attente des
messages diffusés au groupe et qu'il a reçus et sont en attente pour être délivrés.
Les messages avec ce « Commit Sequence Number » sont ordonnés dans une file et
délivrés au processus destinataire.
Un protocole d’ordre causal est un protocole qui assure que les messages reçus sur un même
site sont délivrés en respectant les dépendances causales entre les événements d’émission
de ces messages.
Algorithme CBCAST :
Problème
Systèmes Distribués
Les dépendances causales entre les différentes diffusions sont les suivantes :
Une diffusion causale suppose donc que sur chaque site les message soient délivrés dans un
ordre correspondant à l'un des suivants (m3 peut être délivré dans l'une quelconque des
positions vertes): m3 m1 m3 m2 m3 m4
L'ordre d'arrivée sur les différents sites est quant à lui le suivant (les messages en rouge
violent l'ordre imposé pour une délivrance causale :
sur S1 : m1 m3 m2 m4
sur S2 : m1 m2 m4 m3 (m4 arrive trop tôt);
sur S3 : m3 m1 m2 m4
sur S4 : m3 m4 m2 m1: d'une part m4 arrive trop tôt par rapport à m1 et m2 et,
d'autre part, m2 arrive trop tôt par rapport à m1.On peut noter au passage que le
canal de communication entre S3 et S2 ne respecte pas la propriété FIFO (le message
m4 y double le message m3).
Algorithme CBCAST
Dans l'algorithme décrit maintenant utilisable pour des diffusions dans des groupes fermés,
une estampille vectorielle (de taille n égale au nombre de membres du groupe) est utilisée
pour dater les diffusions :
Systèmes Distribués
La délivrance d'un message qui, lors de son arrivée sur un site, ne satisfait pas au moins l'une
des conditions précédentes doit être différée sur ce site jusqu'à ce que les deux conditions
soient effectivement satisfaites. La mise à jour de l'horloge locale est réalisée lors de la
délivrance du message.
Exemple :
La figure suivante illustre l'utilisation de l'algorithme pour détecter les arrivées prématurées
de messages et en différer la délivrance :
les anomalies y sont repérées en rouge (point A, B et C) ainsi que les valeurs
courantes des horloges des sites qui y sont comparées avec les valeurs des
estampilles (vertes) des messages arrivant correspondant aux horloges des sites
émetteurs;
pour les arrivées de messages pouvant donner lieu à une délivrance du message, les
valeurs courantes des horloges du site avant et après délivrance sont respectivement
en bleu (en haut) et en vert (en bas);
les flèches bleues indiquent les instants ou les messages pourront être effectivement
délivrés.
Systèmes Distribués
10 | P a g e Boulekhmir Abdessamed
Systèmes Distribués
Communication de groupes – Protocoles de diffusion – Appels de
procédures – Mémoire Distribuée- Modèles de Cohérence
Le modèle Client-Serveur est un modèle simple à utiliser pour la structuration des systèmes
répartis.
Mais ce modèle s’appuie sur des communications de type entrée/sortie (SEND /
RECEIVE). Ce n’est pas le modèle plus efficace pour les systèmes répartis car son but est de
rendre le comportement des systèmes répartis identique à celui des systèmes centralisés.
Appel aux procédures distantes presque aussi facilement qu’un appel aux procédures
locales.
• fd = entier.
• Nbytes = entier.
3. L’appelant enlève les paramètres de la pile pour retourner à son état original. Les
paramètres peuvent être passés :
• Par valeur.
Systèmes Distribués
• Par référence.
11 | P a g e Boulekhmir Abdessamed
Systèmes Distribués
Communication de groupes – Protocoles de diffusion – Appels de
procédures – Mémoire Distribuée- Modèles de Cohérence
On veut que l’appel à une procédure distante se fasse comme si l’appel était local. Même si cela doit
être transparent pour l’utilisateur, il est nécessaire que le mécanisme RPC mette en place des
versions différentes pour l’appel d’une procédure selon qu’elle soit locale ou distante.
On va donc avoir une souche client (client stub) et une souche serveur (server stub).
Souche Client :
• La version cliente de la procédure est constituée d’une souche cliente (« client stub ») qui est
placée dans la librairie locale.
• L’appel se fait ensuite comme avec une procédure locale (la pile est gérée
localement) et l’exécution est prise en charge par le noyau.
• Par contre, les paramètres ne sont pas stockés dans les registres et aucune
donnée n’est demandée au noyau.
Les paramètres sont stockés dans un message construit par le noyau et envoyé au serveur distant qui
contient la partie serveur de la procédure.
Souche Serveur :
• La souche extrait les paramètres du message, renseigne la pile et appelle la procédure qui
pense être appelée par un client local.
• Lorsque la procédure a terminé son traitement, elle renseigne la pile et rend la main à la
souche (voir schéma suivant).
Systèmes Distribués
12 | P a g e Boulekhmir Abdessamed
Systèmes Distribués
Communication de groupes – Protocoles de diffusion – Appels de
procédures – Mémoire Distribuée- Modèles de Cohérence
À la compilation les stubs sont créés et le compilateur peut s’aider d’un langage de définition
d’interfaces (IDL).
Le passage de paramètres dans le cadre des RPCS n’est pas forcément quelque chose de Simple.
Dans les systèmes répartis, les machines peuvent être différentes. Des problèmes de conversion
peuvent apparaître.
• Le serveur compare cet octet avec le sien : Si c’est le même aucune transformation n’est
nécessaire, sinon il effectue la transformation.
Le pointeur (adresse) n’est connu que dans l’espace d’adressage du processus qui le crée.
Cette adresse n’est valide que dans la machine où s’exécute le processus.
La souche client qui récupère un pointeur, copie le contenu de la zone adressée dans le message. Au
retour elle place le résultat dans la zone.
Le lien dynamique
Systèmes Distribués
À l’initialisation, le serveur exporte son interface. Il l’envoie à un binder (relieur) pour signaler son
existence.
• nom ;
13 | P a g e Boulekhmir Abdessamed
Systèmes Distribués
Communication de groupes – Protocoles de diffusion – Appels de
procédures – Mémoire Distribuée- Modèles de Cohérence
• Il envoie un message au relieur pour importer la version de la procédure qu’il désire invoquer.
Avantage :
III.6- Les problèmes liés aux RPCs dans les systèmes répartis:
1. Attendre que le serveur redémarre et relancer le traitement. « Au moins un traitement est réussi.
» (Peut-être plus).
2. Abandon du client et rapport de l’erreur. « Au plus un traitement est réussi. » (Peut-être aucun).
3. Ne rien dire au client (aucune garantie) Seuls avantages : Facile à gérer et à implémenter.
Lorsqu’un client tombe en panne alors qu’il a demandé un traitement à un serveur, on dit que
l’échange devient orphelin. Cela a pour effet de gaspiller du temps CPU, de bloquer des
ressources, lorsqu’il redémarre, il peut recevoir des messages antérieurs à la panne (problème
de confusion).
1. L’extermination : Le client enregistre les appels dans un log. Au redémarrage l’orphelin est détruit.
Beaucoup d’écritures disque à chaque RPC.
14 | P a g e Boulekhmir Abdessamed
Systèmes Distribués
Communication de groupes – Protocoles de diffusion – Appels de
procédures – Mémoire Distribuée- Modèles de Cohérence
Un temps T déterminé identique pour tous est donné à 1 RPC. Difficile de choisir un temps T (les
RPCs sont sur des réseaux différents).
Avec connexion
Avantage :
• Simple à utiliser.
Désavantage :
Avantage :
• Déjà construit.
15 | P a g e Boulekhmir Abdessamed
Systèmes Distribués
Communication de groupes – Protocoles de diffusion – Appels de
procédures – Mémoire Distribuée- Modèles de Cohérence
Désavantage :
Protocole propriétaires
Avantage :
Désavantage :
Choisir entre un accusé de réception par paquet. Attente accusé avant envoi suivant
Systèmes Distribués
16 | P a g e Boulekhmir Abdessamed
Systèmes Distribués
Communication de groupes – Protocoles de diffusion – Appels de
procédures – Mémoire Distribuée- Modèles de Cohérence
Si un problème est rencontré sur un paquet le client le renvoie. Ou seul accusé de réception à la fin
de l’envoi. Envoi aussi vite qu’il peut.
Le code de la RPC est crucial pour les performances du système. La séquence d’instructions
exécutées pour chaque RPC est appelée chemin critique.
C’est le temps nécessaire et rajouté par la RPC vs si le traitement était effectué en local.
Ce chemin critique démarre quand le client appelle la souche client et se termine lorsque le résultat
est renvoyé par le serveur.
Systèmes Distribués
17 | P a g e Boulekhmir Abdessamed
Systèmes Distribués
Communication de groupes – Protocoles de diffusion – Appels de
procédures – Mémoire Distribuée- Modèles de Cohérence
Note : La question intéressante ensuite est : Quelle est la partie du chemin critique où L’on passe le
plus de temps. La réponse permet de savoir où l’effort d’optimisation doit être fait.
Tous les protocoles sont basés sur des échanges de messages sur les moyens de communication. Les
messages peuvent être perdus et créer de graves problèmes d’intégrité dans le système.
Un des moyens de pallier ce problème est la mise en place d’un timer (gestion du temps). Qui va
associer un horodatage à chacun des messages et définir une durée de vie (délai d’expiration). Si le
temps imparti pour la durée de vie d’un message est écoulé, le message sera renvoyé. Le nombre de
renvois est défini dans le protocole.
• Spécification de l’expiration.
• La structure sera insérée dans une liste existante (qui contient d’autres structures).
Lorsqu’un accusé de réception ou une réponse revient, l’entrée est retirée de la table.
Note : Parce que la plupart du temps les timers n’ont pas le temps d’expirer, on perd beaucoup de
Systèmes Distribués
temps à insérer puis effacer les entrées non expirées. Donc une autre approche peut être envisagée.
L’idée est de rajouter une entrée « expiration » dans la table des processus. La mise à jour des timers
devient quelques instructions en langage machine. A intervalles réguliers (toutes les secondes) le
noyau parcourt la table et compare les timers avec le temps courant.
18 | P a g e Boulekhmir Abdessamed
Systèmes Distribués
Communication de groupes – Protocoles de diffusion – Appels de
procédures – Mémoire Distribuée- Modèles de Cohérence
a- Principe de transparence :
• Générer un nouvel ensemble de règles qui empêche la construction d’objets qui était possible
avant.
• Les accès doivent être construits. Le principe de transparence est donc violé.
Comment le passage de paramètres dont on ne connaît pas la taille à priori peut se faire ? (Par
exemple les tableaux en langage C).
Systèmes Distribués
19 | P a g e Boulekhmir Abdessamed
Systèmes Distribués
Communication de groupes – Protocoles de diffusion – Appels de
procédures – Mémoire Distribuée- Modèles de Cohérence
Introduction
Implémentation facile:
Par contre avoir une seule copie de page en écriture génère un goulet d’étranglement. Il est
impératif d’avoir plusieurs copies de page en lecture et en écriture dans le système. Cela peut
conduire à des problèmes d’incohérence.
Les modèles de cohérence sont des contrats basés sur des règles. Ils permettent de gérer plusieurs
copies de pages mémoire dans des mémoires dans systèmes répartis. L’objectif est d’éviter les
goulets d’étranglement associés à l’utilisation concurrente d’une page mémoire unique. Il existe
plusieurs modèles (ou règles) de cohérence :
• Cohérence stricte.
• Cohérence séquentielle.
Systèmes Distribués
• Cohérence causale.
20 | P a g e Boulekhmir Abdessamed
Systèmes Distribués
Communication de groupes – Protocoles de diffusion – Appels de
procédures – Mémoire Distribuée- Modèles de Cohérence
La règle de la cohérence stricte est la suivante : Toute lecture d'une position de mémoire x retourne
la valeur stockée par l'écriture la plus récente.
La problématique
• Un processus sur une machine A lit x à un temps T1 (A envoie un message à B pour obtenir x).
• A un temps T2 (un peu plus tard) avec T2 > T1, un processus de B modifie x.
Mais est-ce raisonnable qu’un contrat de cohérence stricte soit passé entre les logiciels et la
mémoire ? Si des processus modifient lisent et écrivent en mémoire à des fréquences
approchant les nanosecondes cela est pratiquement (physiquement) impossible à honorer.
En conclusion, cette règle est la plus contraignante, elle tient compte d'un temps global absolu, ainsi
la détermination de la plus récente ne sera pas ambiguë. Elle implique que lorsque la mémoire est
basée sur la cohérence stricte :
• Tous les processus voient instantanément toutes les écritures qui y sont effectuées.
• Lorsqu’une lecture est effectuée, la dernière mise à jour et fournie. Peu importe lorsque la
prochaine écriture se produira.
La règle de la cohérence séquentielle est la suivante : Le résultat de toute exécution est identique à
une exécution séquentielle et ordonnée de tous les processus, et les opérations de chaque
processus apparaissent dans l'ordre d'exécution de son programme.
Systèmes Distribués
• P1 : o a = 1 ; o print (b,c) ;
• P2 : o b = 1 ; o print (a,c) ;
• P3 : o c = 1 ; o print (a,b) ;
21 | P a g e Boulekhmir Abdessamed
Systèmes Distribués
Communication de groupes – Protocoles de diffusion – Appels de
procédures – Mémoire Distribuée- Modèles de Cohérence
Les trois processus s’exécutent en parallèle sur trois processeurs différents et ont tous accès aux
variables a, b, c dans une mémoire répartie et partagée.
Avec six instructions indépendantes on peut avoir en théorie 6! (720) séquences d’instructions
différentes. Néanmoins, comme l’ordre d’exécution a=1 et avant print(b,c) doit être respecté,
cela ramène à 90 séquences possibles.
Nous trouvons quatre résultats différents en fonction de l’ordre de traitement des instructions.
Ici la notion de temps a disparu, seul l'ordre d'exécution compte. Pour pouvoir appliquer cette règle
de cohérence il faut s'assurer qu'avant le démarrage d'une opération mémoire les autres opérations
soient terminées.
• La cohérence mémoire : une lecture dans une localisation renvoie toujours la valeur
dernièrement mise à jour.
Note : Assez facile à programmer, mais gros problème de performance. Car si le nombre de
lectures augmente alors le nombre d’écritures diminue :
R = temps de lecture.
W = temps d’écriture.
Systèmes Distribués
R+W ≥ T
Cette règle est une version affaiblie de la règle de cohérence séquentielle, qui tient compte de
la relation causale potentielle ou pas entre les événements. La règle stipule :
Les écritures qui ont potentiellement une relation causale doivent être vus par tous les processus
dans le même ordre. Des écritures parallèles peuvent être vus dans un ordre différent sur
différentes machines.
22 | P a g e Boulekhmir Abdessamed
Systèmes Distribués
Communication de groupes – Protocoles de diffusion – Appels de
procédures – Mémoire Distribuée- Modèles de Cohérence
Un exemple :
En résumé :
• Si deux processus écrivent simultanément deux variables, il s’agit de processus concurrents qui
n’ont pas de relation causale.
• Si un processus lit une variable et ensuite en écrit une autre, alors il y a possibilité de
relation causale.
Exemple :
La règle stipule : Les écritures causales, faites par un processus, sont vues par tous les processus dans
le même ordre, les écritures parallèles (concurrentes) peuvent être vus dans un ordre différent
par des processus différents.
Note : Pratiquement identique à la cohérence PRAM. La cohérence PRAM et processeur sont les
mécanismes qui sont les plus performants. Elles sont moins restrictives pour les applications
partant du principe que les applications n’ont forcément à connaître tous les accès en écriture qui
sont effectués. Un moyen serait alors de rentrer les écritures en section critique (personne ne
Systèmes Distribués
peut accéder aux variables) et d’envoyer les modifications à tout le monde lorsque les mises à jour
sont effectuées.
1. La cohérence faible.
2. La cohérence relâchée.
23 | P a g e Boulekhmir Abdessamed
Systèmes Distribués
Communication de groupes – Protocoles de diffusion – Appels de
procédures – Mémoire Distribuée- Modèles de Cohérence
3. La cohérence en entrée.
1. Les accès aux variables de synchronisation ont une séquence cohérente. Tout accès est
diffusé à tous les nœuds qui partagent la mémoire et aucun autre n'est possible.
2. L'accès à une variable de synchronisation n'est pas autorisé tant que toutes les écritures qui
précèdent ne sont pas exécutées. (On vide le pipeline).
3. L'accès aux données (écriture ou lecture) n'est pas autorisé tant que tous les accès aux
variables de synchronisation qui précèdent ne sont pas exécutés. (En effectuant une synchro avant
de lire la donnée, on est sûr d’avoir la bonne valeur).
Pour éviter la violation il faudrait retirer la lecture L(x)1 ce qui rendrait E(x)1 et E(x)2 concurrent et
non plus causal. Copyright (C) 1997-2007. JM Rodriguez. Tous droits réservés. Reproduction interdite
par tous moyens sauf à des fins de citation.
La synchronisation permet d’envoyer toutes les écritures que l’on effectuées et de recevoir
celles des autres.
Exemple de séquences :
Autorisée
Non autorisée
Cette amélioration de la cohérence faible permet à la mémoire de savoir quand elle entre ou quand
elle quitte une région critique. Deux opérations complètent le dispositif :
• Acquisition (Acq), indique à la mémoire qu'un entrée dans la région critique est en cours.
24 | P a g e Boulekhmir Abdessamed
Systèmes Distribués
Communication de groupes – Protocoles de diffusion – Appels de
procédures – Mémoire Distribuée- Modèles de Cohérence
• Libération (Rel), signale à la mémoire la sortie de la région critique. Voici une séquence valide.
1. Avant un accès à une variable partagée, toutes les acquisitions précédentes du processus ont
été exécutées complètement.
2. Avant qu'une libération soit autorisée il faut que toutes les écritures et lectures du processus
soient exécutées complètement.
2. Pour qu'un processus accède en mode exclusif à une variable de synchronisation, il faut s'assurer
qu'aucun autre processus ne soit en train de travailler, même en mode non-exclusif, avec cette
variable de synchronisation.
3. Lorsqu'un accès, en mode exclusif, à une variable de synchronisation est réalisé, tout processus
qui suit en mode non-exclusif et qui demande accès à la variable de synchronisation doit demander
au propriétaire de la région critique les données disponibles.
25 | P a g e Boulekhmir Abdessamed
Systèmes Distribués
Communication de groupes – Protocoles de diffusion – Appels de
procédures – Mémoire Distribuée- Modèles de Cohérence
Conclusion .
Systèmes Distribués
26 | P a g e Boulekhmir Abdessamed