Changes between Version 2 and Version 3 of WikiStart


Ignore:
Timestamp:
May 19, 2016, 7:25:38 PM (8 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WikiStart

    v2 v3  
    1111dans tous les clusters pour éviter la contention.
    1212
    13 On fait l’hypothèse que - pour chaque processus P - le descripteur du processus P, et certaines structures qu’il contient
    14 telles que la table des pages (PT) et la liste des vsegs (VSL) sont répliquées dans tous les cluster qui contiennent
    15 au moins un thread de P.
    16 
    17 1)  pour un processus utilisateur P
    18 
    19 Un vseg désigne une zone mémoire contigüe dans l’espace virtuel d’un processus, auxquels sont attachés
    20 certains attributs (droit d’accès, politique de réplication/distribution dans les différents clusters, cachabilité, etc.).
    21 
    22 - Un vseg est public quand il peut être accédé par n’importe quel thread du processus,
    23 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
    24 s”exécutant dans le même cluster que le cluster ou est mappé le vseg.
    25 
    26 - Un vseg private est entièrement mappé dans la mémoire physique du cluster K dans lequel il est accessible.
    27 Il est enregistré dans liste des segments et dans la table des pages du cluster K, mais  pas dans les autres clusters.
    28 
    29 - Un vseg public est enregistrés dans la liste des segments et dans la table des pages de tous les clusters actifs
    30 (i.e. tous les clusters qui contiennent un thread de P).
    31 Pour maintenir la cohérence entre les tables de pages, chaque vseg public possède un cluster de référence, qui est le cluster
    32 propriétaire du processus (i.e. le cluster Z où a été créé le processus).
    33 Les réplicas du descripteurs de processus (et surtout les tables
    34 associées) autres que celui contenu dans le cluster de référence peuvent être considérées comme des caches read-only.
    35 
    36 - Un vseg peut être localised (toutes les pages du vseg sont mappées dans le même cluster),
    37 ou distributed (différentes pages sont mappées dans différents clusters en utilisant par exemple les bits de poids
    38 faibles comme clé de distribution). Les vsegs privés sont toujours localised.
    39 
    40 Il existe sept types de vsegs, correspondant à des politiques de réplication/distribution différentes :
    41 
    42 - CODE :           private / plusieurs vsegs / mêmes adresses virtuelles, même contenu, un vseg par cluster actif
    43 - STACK :          private / plusieurs vsegs / un vseg par thread de P, mappé dans le cluster hébergeant le thread
    44 - DATA :             public  / un seul vseg / distributed
    45 - HEAP :            public  / un seul vseg / distributed
    46 - REMOTE :      public  / plusieurs vsegs / chaque vseg localised (dans le cluster concerné par le remote_malloc(x,y) )
    47 - FILE :              public  / plusieurs vsegs / chaque vseg localised (dans le cluster contenant le fichier concerné par le mmap() )
    48 - ANON :           public  / plusieurs vsegs / chaque vseg distributed (associé à un mmap() anonyme )
    49 
    50 2) pour le noyau,
    51 
    52 Les différentes instances du noyau ne travaillant qu’en adressage physique, les segments kernel sont définis dans
    53 l’espace d’adressage physique.
    54 
    55 - un segment kernel est private quand il ne peut être accédé que par l’instance locale du noyau.
    56 il est public quand il peut être accédé par n’importe quel instance du noyau.
    57 
    58 Dans un segment public, le noyau peut définir des  structures répliquées homologues.
    59 Si N est le nombre de clusters, une structure répliquées homologue est un ensemble de N structures identiques,
    60 de longueur fixe, implantées à des adresses physiques ne différant entre elles que par les bits de poids fort
    61 définissant les coordonnées du cluster.
    62 
    63 On identifie (pour l’instant) les segments suivants
    64 
    65 - KDATA :     private
    66 - KCODE :   private
    67 - KSTACK :  private
    68 - KHEAP :    private
    69 - SHARED :  public
    70 
    71 ———————————————————————————————
    72 B) Construction dynamique des tables de pages d’un processus
    73 ———————————————————————————————
     132) [wiki:page_tables Construction dynamique des tables de pages]
    7414
    75151) Descripteur de vseg
     
    284224initiée par le cluster Z : Ce lock doit être pris systématiquement par le cluster propriétaire avant un PT_INVAL_BC_RPC, et par les autres clusters avant  un remore_read(). Il garantit que le PT_INVAL_BC_RPC  ne sera lancé qu’après la fin de tous les remote_read() en cours. Il garantit qu’aucun nouveau remote_read() ne sera plus accepté avant la completion du PT_INVAL_BC_RPC.
    285225
    286 == C) Création dynamique des processus et des thread ==
     226== 3) [wiki:processus_thread Création dynamique des processus et des thread] ==