Changes between Version 9 and Version 10 of replication_distribution


Ignore:
Timestamp:
Oct 12, 2016, 12:59:50 PM (6 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • replication_distribution

    v9 v10  
    3030|| type        ||               ||                  ||   nombre                       ||    commentaire                                              ||
    3131|| CODE     ||  private   || localised   || un par cluster actif        || mêmes adresses virtuelles, même contenu   ||
     32|| DATA       ||  public   || distributed || un par processus         || données globales partagées                          ||
    3233|| STACK    ||  private  || localised    || un par thread                || dans le cluster hébergeant le thread             ||
    33 || DATA       ||  public   || distributed || un par processus         || données globales partagées                          ||
    3434|| HEAP      ||  public   || distributed || un par mmap(anon)      || utilisé aussi par la lib malloc()                        ||
    3535|| REMOTE ||  public   || localised    || un par remote_malloc() || utilisé par remote_malloc()                            ||
    3636|| FILE        ||  public   || localised    || un par MMAP(file)         || dans le cluster contenant le fichier file          ||
    3737
    38 Les 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'').
     38Pour un process P, les 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 (main thread) 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'').
    3939
    4040Les tables de page PT sont mises à jour progressivement en réponse aux défauts de page (''on demand paging'').
     
    4242== 2) User process virtual space organisation ==
    4343
    44 The virtual space of an user process P in a given cluster K is split in five zones called ''vzone''.  Each vzone contains one or several vsegs.
     44The virtual space of an user process P in a given cluster K is split in four zones called ''vzone''.  Each vzone contains one or several vsegs.
    4545
    4646 1. The '''utils''' vzone has a fixed size, and is located in the lower part of the virtual space. It contains the three vsegs ''kentry'', ''args'', ''envs'', whose sizes are defined by configuration parameters. These vsegs are set by the kernel each time a new process is created. The ''kentry'' vseg has CODE type and contains the code that must be executed to enter the kernel from user space. The ''args'' vseg has DATA type, and contains the process main() thread arguments. The ''envs'' vseg has DATA type and contains the process environment variables.
    4747
    48  1. The '''text''' vzone has a variable size, and contains the ''text'' vseg containing the process code. The size is defined in the .elf file and reported in the boot_info structure by the boot loader.
     48 1. The '''elf''' vzone has a variable size, and contains the ''text'' and and ''data'' vsegs containing the process binary code and global data. The size is defined in the .elf file and reported in the boot_info structure by the boot loader. It is located on top of the '''utils''' vzone
    4949
    50  1. The '''data''' vzone has a variable size, and contains the ''data'' vseg containing the process global data. The size is defined in the .elf file and reported in the boot_info structure by the boot loader.
     50 1. The '''stack''' vzone has a fixed size, and is located in the upper part of the virtual space. It contains as many vsegs of type STACK as the max number of threads for a process in a single cluster. The total size is defined as CONFIG_VSPACE_STACK_SIZE * CONFIG_PTHREAD_MAX_NR.
    5151
    52  1. The '''stack''' vzone has a fixed size, and is located in the upper part of the virtual space. It contains as many vsegs of type STACK as the max number of threads for a process in a cluster. The total size is defined as CONFIG_VSPACE_STACK_SIZE * CONFIG_PTHREAD_MAX_NR.
    53 
    54  1. The '''heap''' vzone has a variable size, and occupies all space between the top of the data vzone and the base of the stack'' zone. It contains all vsegs of type dynamically allocated by the reference VMM manager.
     52 1. The '''heap''' vzone has a variable size, and occupies all space between the top of the '''elf''' vzone and the base of the '''stack''' zone. It contains all vsegs of type HEAP, REMOTE or FILE that are dynamically allocated by the reference VMM manager.
    5553 
    5654== 3) segments utilisés par le noyau ==