Vous êtes sur la page 1sur 33

Université des Sciences et Technologies Houari Boumediene

Faculté d’Informatique

La mémoire partagée
Mémoire Partagée Distribuée :
distribuée (DSM)
Organisation de la mémoire : Chaque processeur a sa propre mémoire locale distincte. Les processeurs communiquent entre eux en échangeant des messages via un réseau.
Communication : La communication entre les processeurs se fait généralement par envoi de messages, et les données doivent être explicitement partagées entre les
différents nœuds.
Avantages : Évite les goulets d'étranglement de la mémoire centrale, permet une meilleure évolutivité, car chaque nœud peut être ajouté de manière indépendante.

Systèmes Multiprocesseurs (ou SMP - Symmetric Multiprocessing) :

Organisation de la mémoire : Les processeurs partagent un espace mémoire commun. Tous les processeurs ont un accès direct à la même mémoire centrale partagée.
Communication : La communication entre les processeurs est facilitée par le fait qu'ils partagent la même mémoire. Les changements dans la mémoire par un processeur sont
immédiatement visibles pour les autres.
Avantages : La simplicité de programmation est souvent un avantage majeur, car les processeurs peuvent partager des données plus facilement
Introduction

Processus
• Indépendants
• Coopérantsdes processus qui dépend l'exécution l'un de l'autre en général ils sont utilisé dans les processus reparti

Communication Inter-processus (IPC)

• Passage de messages
• Mémoire partagée
Introduction

Passage de messages
• Etablissement d’un lien de
communication
• Primitives send() et receive()
Introduction

La mémoire partagée
• Partage d’un même espace de stockage
virtuel qui donne l’impression d’une
mémoire physique commune
mémoire partagée est une mémoire Virtual. chaque nœud contient une mémoire local une partie de cette mémoire
est dans la mémoire partagé donc quand un nœud accède à la mémoire partagé il a l'impression qu'il a accédé à une
mémoire simple mais on vrai il accède à une mémoire local d'un autre nœud
Introduction

Mémoire partagée distribuée


• Chaque nœud a sa propre mémoire locale
• Chaque nœud fournit des services de Lecture/Ecriture
• L’ensemble des mémoires locales des nœuds forment l’espace
virtuel partagée
• Accéder aux données partagées sans utiliser IPC
• Le mécanisme de la DSM fournit un niveau d’abstraction de
telle sorte que les nœuds ont l’impression d’accèder à une
mémoire partagée locale.
Architecture
Fonctionnement
Avantages et inconvénients
Avantages
• Pas de primitives Send() et Recieve()=> gestion implicite de la communication
• Un seul et grand espace d’adressage => simplifie le passage par adresse des structures
complexes
• Utilise une interface logiciel simple
• Plus intéressantes que les systèmes multi-processeurs en terme de cout hardware
• Les programmes DSM sont portables (utilise des interfaces de programmation communes)
• Mise en échelle

Inconvénients
• Nécessite des mécanismes de verrouillage pour éviter l’accès simultané aux données
(verrous..etc)
• Les programmeurs doivent comprendre les modèles de consistance pour programmer
correctement la DSM
• L’existence d’un gestionnaire de mémoire empêche les programmeurs d’utiliser leurs
propres solutions d’échange de messages
Caractéristiques d’une DSM

Granularité
• Unité de partage ou taille de bloc transféré.
• Le choix de la granularité est influencée par :
• Cout en pagination
• Taille du répertoire
• Taille des blocs à mettre à jour (si un grand bloc est mis à jour alors
tout le bloc doit être transféré alors que seules certaines parties ont
été modifiées).
• Faux partage (exemple : 2 variables = dépendantes dans un même
bloc).
• Beaucoup de systèmes de DSM optent pour une granularité égale à la
taille de la page physique de la mémoire virtuelle conventionnelle.
Caractéristiques d’une DSM
Structure de l’espace mémoire partagé :
• Cette structure dépend de l’application que supporte la DSM.
• Trois Approches :
• Non structuré :ensemble de mots => simple a programmer
• Structuré par type de donnés :
=>la taille des objets et variables accédés changent
=>taille de bloc partagé variable => plus difficile à programmer
• structure BDD : ensemble d’enregistrement
plusieurs processeurs partagent l'accès à une
mémoire centrale commune maintiennent la
Cohérence Mémoire et synchronisation des accès : cohérence des données lorsqu'ils effectuent des
opérations de lecture et d'écriture dans des zones de
mémoire partagée pour s'assurer que tous les
processeurs voient une vue cohérente
Conception d’une
Localisation et accès aux données : DSM
• Localiser et retourner une donnée
• Nécessite d’un mécanisme de localisation de blocs de données (recherche distribuée).

Stratégie de Remplacement :
• Dans le cas où la mémoire locale est pleine
• stratégie de remplacement des données stockées en mémoire par de nouvelles

Mise à jour :
• Deux nœuds peuvent exécuter des actions concurrentes
• D’où le besoin d’un mécanisme de mise à jour qui prend en considération ces contraintes

Hétérogénéité :
• Une DSM doit prendre en compte le problème d’hétérogénéité dans le cas de machine
hétérogène (codage,…).
Les modèles de cohérence dans une DSM
le concept de cohérence dans le contexte des
systèmes distribués:
-le degré de similitude entre copies
-les limites de divergences entres copies
-un comportement identique dans le cas ideal
La cohérence -les copies évoluent de manière différentes dans
le cas reel

• Une relation qui définit le degré de similitude entre les différentes


copies d’une entité répliquée dans un système distribué
• Elle défini les limites de divergences entre les copies
• Dans le cas idéal, cette relation caractérisent des copies qui ont un
comportement identique
• Dans les cas réels, les copies évoluent de manière différentes
• Une mémoire est dite cohérente si la valeur retournée par une opération
de lecture à un certain emplacement de la mémoire est toujours la valeur
qui correspond à la dernière écriture effectuée à ce même emplacement.
Les modèles de cohérence dans une DSM
Les modèles de cohérences
• Définit les règles d’accès à une copie de données ainsi que l’ordre des mise à jour.
• Les opérations d’accès sont lire et écrire (éventuellement des opérations plus complexes, mais
toujours divisées entre consultation et modification)
• Il existe de nombreux modèles de cohérences qui répondent chacun aux besoin de l’application visée
• Deux catégories de modèles:
• Cohérence forte:
• Attachée à l'environnement d'exécution des programmes : Système et Matériel (cohérence
couche basse)
• Assurée en toutes circonstances ... même quand ce n'est pas nécessaire
• Cohérence faible (basée synchronisation):
• A la charge du programme, plus exactement du compilateur qui sait quand il doit y avoir
cohérence, ... il marque de façon explicite les endroits où la cohérence est
nécessaire(cohérence couche haute)
• Assurée "autour" de points de synchronisation
• Cohérence => Exécution plus rapide et parallélisme
Cohérence forte

Cohérence atomique Cohérence causale

Cohérence séquentielle
La cohérence stricte ou atomique (strict toute lecture de donnée doit être
consistency) la dernière valeur écrite

• Intuition naturelle de la notion de cohérence


• Toute lecture retourne la dernière valeur qui été écrite
• Nécessite une horloge globale
• Tous les processeurs aperçoivent les opération dans le même
ordre qui est l’ordre globale
• Utilisée par les systèmes mono-processeurs
• La cohérence stricte est un modèle idéal (non réalisable), que
l’on essaie d’approcher au moyen de modèles moins
contraignants
La cohérence stricte ou atomique (strict consistency)

S=w1(x)a w2(x)b r1(x)b w3(x)c r2(x)c => exécution atomique stricte


La cohérence stricte ou atomique (strict consistency)

S=w1(x)a w2(x)b r1(x)b r2(x)b w3(x)c => exécution non atomique non stricte

L’écriture de P3 s’est passée avant la lecture de


P2 dans le temps
La cohérence séquentielle (sequantial consistency) chaque partie d'exécution
respecte l'ordre séquentiel des
autres exécution exemple des

• Formalisée par Leslie Lamport en 1979 commentaires sur les réseaux


sociaux

• Moins restrictif que le modèle atomique


• Tous les processus aperçoivent les opérations dans le même ordre
• Ne garantit pas qu’une lecture retournera la dernière valeur écrite
• Plusieurs séquences d’exécution possibles mais
• Le résultat de la séquence est le même que si les opérations de
tous les processus avaient été exécutées dans un ordre séquentiel
donnée et
• Dans lequel, toutes les opérations de chaque processus suivent
l’ordre de leurs programmes.
• Exemple: commentaires sur les réseaux sociaux
La cohérence séquentielle (sequantial consistency)

P1 W(x)1 W(x)3

R(x)1 W(x)2
P2

R(x)1 R(x)3 R(x)2


P3

R(x)1 R(x)2 R(x)3


P4

Cohérence non séquentielle=> P3 et P4 ne voient pas la même chose !


La cohérence séquentielle (sequantial consistency)

S1= W3(x)a r3(x)a w2(y)c w2(x)b r1(x)b

S2= W3(x)a w2(y)c r3(x)a w2(x)b r1(x)b


La cohérence causale (causal consistency)
exemple de commentaire repense sur commentaire
cette repense ne se fait pas sans l'existence d'un
commentaire

• Relâche les contraintes de l’ordre séquentiel


• Il n’est pas toujours nécessaire d’obtenir l’ordre total unique pour
tous les processus
• Se base sur la relation de causalité (happened-before ) pour
déterminer l’ordre des opérations
• L’ordre est maintenu uniquement pour les opérations liées
causalement, pour le reste, l’ordre n’est pas important
• Exemple: réponses au commentaires
2
1

1 2

Cohérence séquentielle non respectée => P3 et P4 ne voient pas la


même chose !! Mais causale !!!
Quelques exemples
Stricte? non
Séquentielle? oui
Stricte? non
Séquentielle? oui
Stricte? non
Séquentielle? non
Stricte? non
Séquentielle? Non
Stricte? non
Séquentielle? Oui
S=w1(x,2) r3(x,2) w1(x,4) r4(x,4) r2(x,4) w2(x,7) r3(x,7) r4(x,7)
Causale? oui
Stricte? non
Séquentielle? Non
Causale? non
Cohérence basée synchronisation
• Est-ce nécessaire d’assurer la cohérence à tout instant? => Non
• Exemple: Cohérence à l’intérieur d’une section critique => non nécessaire
• Idée: associer synchronisation et maintien de la cohérence, à l’aide de
variables et d’opérations de synchronisation.
• Une variable de synchronisation S est associée à un ensemble de données.
• L’appel de l’opération synchronize(S) par un processus p provoque la mise en
cohérence des données locales (vues par p).
• En dehors de ces opérations, la cohérence peut ne pas être assurée.
• Les modèles différent selon le moment où la synchronisation est réalisée:
• Cohérence faible
• Cohérence à la sortie
• Cohérence à l’entrée
La cohérence faible (weak consistency)
La cohérence faible est définie ainsi:
• L’accès aux variables de synchronisation associées à un ensemble de données respecte la
cohérence séquentielle [les opérations de synchronisation sont vues par tous les processus dans le
même ordre]
• Un processus ne peut pas exécuter une opération sur une variable de synchronisation tant que
toutes les écritures antérieures n’ont pas été exécutées sur les copies locales [la synchronisation
force la mise en cohérence de toutes les copies locales]
• Un processus ne peut pas exécuter une lecture ou une écriture tant qu’il n’a pas exécuté toutes les
opérations antérieures sur les variables de synchronisation [après synchronisation, un processus peut
accéder à la version la plus récente des données synchronisées]
Inconvénient:
• Le moment auquel la synchronisation (mise en cohérence) doit avoir lieu, dans le cas d’une suite
d’opérations exécutées en section critique n’est pas spécifié.
La cohérence à la sortie (release consistency)

• On peut protéger une séquence d’opérations sur des éléments (ou


variables) dans un processus en l’incluant entre acquire(V) et
release(V), où V est une variable de synchronisation (verrou)
• Au moment de acquire : toutes les copies locales des variables
protégées sont mises à jour pour tenir compte des écritures non
encore répercutées
• Au moment de release : toutes valeurs des variables locales qui ont
été modifiées sont envoyées vers les copies distantes.
La cohérence à l’entrée (entry consistency)

• Les modifications ne sont pas propagées à la sortie. Elles sont


seulement faites à la prochaine entrée (par le processus considéré ou
par un autre processus)
• Toute variable modifiée indépendamment doit être associée à un
verrou spécifique.
• Au moment de acquire, seules les variables associées au verrou
utilisé sont mises à jour

Vous aimerez peut-être aussi