Changes between Version 7 and Version 8 of replication_distribution


Ignore:
Timestamp:
Sep 3, 2016, 12:56:48 PM (8 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • replication_distribution

    v7 v8  
    99La technique générale permettant à l'OS de contrôler le placement et la réplication des informations sur les bancs mémoire physiques est la mémoire virtuelle paginée.
    1010
    11 == 1)  segments pour un processus utilisateur ==
     11== 1)  Types de segments pour un processus utilisateur ==
    1212
    1313Un '''vseg''' désigne une zone mémoire contigue dans l’espace virtuel d’un processus, auxquels sont attachés certains attributs (droit d’accès, politique de réplication/distribution dans les différents clusters, cachabilité, etc.).
    14 
    15 Pour chaque processus P, le descripteur du processus, et certaines structures qu’il contient telles que la table des pages (PT) et la liste des vsegs (VSL) sont répliquées dans tous les cluster qui contiennent au moins un thread de P.
    1614
    1715 * Un vseg est ''public'' quand il peut être accédé par n’importe quel thread du processus, quel que soit le cluster dans lequel le thread s’exécute. Il est ''private'' quand il n’est accédé que par les threads exécutant dans le même cluster que le cluster ou est mappé le vseg.
     
    1917 * Un vseg ''private'' est entièrement mappé dans la mémoire physique du cluster K dans lequel il est accessible. Il est enregistré dans liste des segments et dans la table des pages du cluster K, mais  pas dans les autres clusters.
    2018
    21  * Un vseg ''public'' est enregistré dans la liste des segments et dans la table des pages de tous les clusters actifs (i.e. tous les clusters qui contiennent un thread de P). Pour maintenir la cohérence entre les tables de pages, chaque vseg ''public'' possède un cluster de référence, qui contient la liste complète de tous les vsegs du processus, et la table des pages complète du processus. Les descripteurs de processus autres que celui contenu dans le cluster de référence sont des replica incomplets et les tables associées peuvent être considérées comme des caches read-only.
    22 
    2319 * Un vseg peut être ''localised'' (toutes les pages du vseg sont mappées dans le même cluster), ou ''distributed'' (différentes pages du même vseg sont mappées dans différents clusters en utilisant par exemple les bits de poids faibles comme clé de distribution). Un vseg ''private'' est toujours ''localised''.
    2420
    25 Il existe sept types de vsegs, correspondant à des politiques de réplication/distribution différentes :
     21Pour chaque processus P, le descripteur du processus est répliqué dans tous les cluster qui contiennent au moins un thread de P. Les structures contenues dans le descripteur de processus telles que la table des pages (PT) et la liste des vsegs (VSL) sont partiellement répliquées, ce qui pose un problème de cohérence pour les vsegs ''public''.
     22 * la copie locale de la liste des vsegs VSL(P,K) d'un process P dans un cluster K contient tous les vsegs ''private'' du cluster K, mais ne contient que les vsegs ''public'' qui ont effectivement été accédé par un thread de P s'exécutant dans le cluster K. Seul le cluster de référence contient la liste complète de tous les vsegs ''public'' définis pour le process P.
     23 * la copie locale de la table des pages PT(P,K) d'un processus P dans cluster K contient toutes les entrées correspondant aux pages ''private'' qui ont effectivement été mappées dans le cluster K, mais elle ne contient que entrées correspondant aux pages ''public''  qui ont effectivement été accédées par un thread de P s'exécutant dans K. Seule la table des pages du cluster de référence contient toutes les pages "public'' qui sont effectivement mappées en mémoire physique (quel que soit le cluster contenant la page physique).
    2624
    27 || type        ||               ||                  ||   nombre                ||    commentaire                                              ||
    28 || CODE     ||  private   || localised   || un par cluster actif || mêmes adresses virtuelles, même contenu  ||
    29 || STACK    ||  private  || localised    || un par thread         || dans le cluster hébergeant le thread             ||
    30 || DATA       ||  public   || distributed || un par processus   || données globales partagées                         ||
    31 || HEAP      ||  public   || distributed || un par processus   || utilisé pour le malloc() standard                    ||
    32 || REMOTE ||  public   || localised   || un par cluster actif || utilisé par le remote_malloc(x,y)                     ||
    33 || FILE        ||  public   || localised   || un par MMAP(file)    || dans le cluster contenant le fichier file          ||
    34 || ANON     ||  public   || distributed || un par MMAP(anon) || équivalent au type HEAP                             ||
     25Les vsegs ''private'' sont donc enregistrés uniquement dans les tables du cluster auquel ils appartiennent, mais les vsegs ''public'' ne sont enregistrés de façon certaine que dans les tables du cluster de référence. Les descripteurs de processus de P autres que celui contenu dans le cluster de référence sont des replica incomplets, et les tables associées peuvent être considérées comme des caches read-only.
    3526
     27Il existe six types de vsegs, correspondant à des droits d'accès ou des politiques de réplication/distribution différentes :
     28
     29|| type        ||               ||                  ||   nombre                       ||    commentaire                                              ||
     30|| CODE     ||  private   || localised   || un par cluster actif        || mêmes adresses virtuelles, même contenu   ||
     31|| STACK    ||  private  || localised    || un par thread                || dans le cluster hébergeant le thread             ||
     32|| DATA       ||  public   || distributed || un par processus         || données globales partagées                          ||
     33|| HEAP      ||  public   || distributed || un par mmap(anon)      || utilisé aussi par la lib malloc()                        ||
     34|| REMOTE ||  public   || localised    || un par remote_malloc() || utilisé par remote_malloc()                            ||
     35|| FILE        ||  public   || localised    || un par MMAP(file)         || dans le cluster contenant le fichier file          ||
     36
     37Les vsegs de type CODE et DATA sont enregistrés dans la VSL d'un cluster K au moment de la création du premier thread de P dans le cluster K. Les vsegs de type STACK sont enregistrés dans dans la VSL d'un cluster K au moment de la création du thread dans le cluster K. Les vsegs de type HEAP, REMOTE, ou FILE sont enregistrés dans la VSL du cluster de référence Z lors des appels systèmes mmap() malloc(), car seul le cluster de référence peut allouer dynamiquement de la place dans l'espace virtuel du processus. Ils ne sont enregistrés dans la VSL des autres clusters que lors des défauts de page détectés par ceux-ci (''on demand registration'').
     38
     39Les tables de page PT sont mises à jour progressivement en réponse aux défauts de page (''on demand paging'').
     40 
    3641== 2) segments utilisés par le noyau ==
    3742