Changes between Version 17 and Version 18 of replication_distribution


Ignore:
Timestamp:
Oct 13, 2016, 7:03:09 PM (8 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • replication_distribution

    v17 v18  
    2727|| type        ||               ||                  ||                                                                                 ||
    2828|| CODE     ||  private   || localized   || Read Only   || one physical mapping per cluster       ||
    29 || DATA       ||  public   || distributed || Read/Write || one single physical mapping               ||
    30 || HEAP      ||  public   || distributed || Read/Write || one single physical mapping               ||
    31 || STACK    ||  private  || localized    || Read/Write || one physical mapping per thread        ||
    32 || MMAP     ||  public   || localized    || Read/Write || one per mmap(anon)                          ||
    33 || FILE        ||  public   || localized    || Read/Write || one per mmap(file)                              ||
    34 || REMOTE ||  public   || localized    || Read/Write || one per remote_mmap()                      ||
     29|| DATA       ||  public   || distributed || Read Write || one single physical mapping               ||
     30|| HEAP      ||  public   || distributed || Read Write || one single physical mapping               ||
     31|| STACK    ||  private  || localized    || Read Write || one physical mapping per thread        ||
     32|| MMAP     ||  public   || localized    || Read Write || one per mmap(anon)                          ||
     33|| FILE        ||  public   || localized    || Read Write || one per mmap(file)                              ||
     34|| REMOTE ||  public   || localized    || Read Write || one per remote_mmap()                      ||
    3535
    3636 1.'''CODE''' : This private vseg contains the user application code. ALMOS-MK creates one CODE vseg per cluster. For a process P, the CODE vseg is registered in the VSL(P,Z) when the process is created in reference cluster Z. In the other clusters X, the CODE vseg is registered in VSL(P,X) when a page fault is signaled by a thread of P running in cluster X. In each cluster X, the CODE vseg is physically mapped in cluster X.
    37 
    3837 1. '''DATA''' : This vseg contains the user application global data. ALMOX-MK creates one single DATA vseg per process, that is registered in the reference VSL(P,Z) when the process P is created in reference cluster Z.  In the other clusters X, the DATA vseg is registered  in VSL(P,X) when a page fault is signaled by a thread of P running in cluster X. To avoid contention, this vseg is physically distributed on all clusters. For each page, the physical mapping is decided by the reference cluster Z, but the page can be mapped on any cluster Y.
    39 
    4038 1. '''HEAP''' This vseg is actually used by the malloc() library. ALMOX-MK creates one single HEAP vseg per process, that is registered in the reference VSL(P,Z) when the process P is created in reference cluster Z.  In the other clusters X, the HEAP vseg is registered  in VSL(P,X) when a page fault is signaled by a thread of P running in cluster X. To avoid contention, this vseg is physically distributed on all clusters. For each page, the physical mapping is decided by the reference cluster Z, but the page can be mapped on any cluster Y.
    41 
    4239 1. '''STACK''' : This private vseg contains the execution stack of a thread. For each thread T of process P running in cluster X, ALMOS_MK creates one STACK vseg. This vseg is registered in the VSL(P,X) when the thread descriptor is created in cluster X. To enforce locality, this vseg is physically mapped in cluster X.
    43 
    44  1. '''MMAP''' : This type of vseg is dynamically created by ALMOS-MK to serve an anonymous mmap() system call executed by a client thread running in a cluster X. The first vseg registration and the physicaI mapping are done by the reference cluster Z, but the vseg is mapped in the client cluster X.
    45 
     40 1. '''ANON''' : This type of vseg is dynamically created by ALMOS-MK to serve an anonymous mmap() system call executed by a client thread running in a cluster X. The first vseg registration and the physicaI mapping are done by the reference cluster Z, but the vseg is mapped in the client cluster X.
    4641 1. '''FILE''' : This type of vseg is dynamically created by ALMOS-MK to serve a file based mmap() system call executed by a client thread running in a cluster X. The first vseg registration and the physicaI mapping are done by the reference cluster Z, but the vseg is mapped in cluster Y containing the file cache.
    47 
    4842 1. '''REMOTE''' : This type of vseg is dynamically created by ALMOS-MK to serve a remote_mmap() system call executed by a client thread running in a cluster X. The first vseg registration and the physicaI mapping are done by the reference cluster Z, but the vseg is mapped in cluster Y specified by the user.
    4943
     
    6155
    6256 1. The '''utils''' vzone 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.  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.
    63 
    6457 1. The '''elf''' zone  is located on top of the '''utils''' vzone. It is defined by the CONFIG_USER_ELF_BASE and CONFIG_USER_ELF_SIZE parameters. It contains the ''text'' vseg (CODE type) and ''data'' vseg (DATA type) defining the process binary code and global data. The actual vsegs sizes are defined in the .elf file and reported in the boot_info structure by the boot loader.
    65 
    6658 1. The '''HEAP''' vzone is located on top of the '''elf''' vzone. It is defined by the CONFIG_USER_HEAP_BASE and CONFIG_USER_HEAP_SIZE parameters. It contains one single ''heap'' vseg, used by the malloc() library.
    67 
    6859 1. The '''mmap''' vzone is located on top of the '''heap''' vzone. It is defined by the CONFIG_USER_MMAP_BASE and CONFIG_USER_MMAP_SIZE parameters. It contains all vsegs of type ANON, FILE, or REMOTE that are dynamically allocated / released by the user application. The VMM implements a specific MMAP allocator for this zone.
    69 
    7060 1. The '''stack''' vzone has a fixed size, defined by configuration parameters as CONFIG_USER_STACK_SIZE * CONFIG_PTHREAD_MAX_NR. It is located in the upper part of the virtual space. It contains an array of fixed size slots, and each slot contain one ''stack'' vseg. In each slot the first page is not mapped to detect stack overflow.
    7161As threads can be dynamically created and destroyed, the VMM implement a specific STACK allocator for this zone.