Changes between Version 60 and Version 61 of replication_distribution


Ignore:
Timestamp:
Dec 20, 2019, 12:35:19 AM (2 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • replication_distribution

    v60 v61  
    5555== __2. User segments__  ==
    5656
     57The user segments are mapped in ''user land'' (generally the lower part of the virtual space), that can be accessed by a core running in user mode.
    5758This section describes the six types of user segments and the associated replication / distribution policy defined and implemented by almost-mkh:
    5859
     
    9697== __ 3. kernel segments__==
    9798
    98 An user thread makes system calls to access protected resources. Therefore,  the VMM(P,K) of a process descriptor P in a cluster K, must contains not only the user segments defined above, but also the kernel segments, to allow the user threads to access - after a syscall - the kernel code and the kernel data structures : Both the user segments virtual adresses, and the kernel segments virtual adresses must be translated.
    99 
    100 Almost-mkh defines 3 types of these kernel segments described below. To avoid contention and improve locality,these four segments are replicated or distributed in each cluster.
     99The kernel segments are implemented in ''kernel land'' (generally in the upper part of the virtual space), that is protected, and can only be accessed by a core running in kernel mode.
     100
     101An user thread makes system calls to access protected resources. Therefore,  the VMM(P,K) of a process descriptor P in a cluster K, must contains not only the user segments defined above, but also the kernel segments, to allow an user thread to access - after a syscall - the kernel code and the kernel data structures : Both the user segments virtual adresses, and the kernel segments virtual adresses must be translated to physical addresses.
     102
     103Almost-mkh defines 3 types of kernel segments described below.
    101104
    102105=== 3.1 KCODE ===
    103106
    104 The '''KCODE''' segment contains the kernel code defined in the ''kernel.elf'' file.  To avoid contention and improve locality, almos-mkh '''replicates''' this code in all clusters. This code has already been copied in all clusters by the bootloader. In each cluster K, and for each process P in cluster K (including the kernel process_zero), almos-mkh registers the KCODE vseg in all VSL(P,K), and map it to the local copy in all the GPT(P,K). This vseg uses only big pages, and there is no on-demand paging for this type of vseg. With this local mapping all access to the virtual instruction addresses will be simply translated by the MMU to the local physical address.
     107The '''KCODE''' segment contains the kernel code defined in the ''kernel.elf'' file.  To avoid contention and improve locality, almos-mkh replicates this code in all clusters. This code has already been copied in all clusters by the bootloader. In each cluster K, and for each process P in cluster K (including the kernel process_zero), almos-mkh registers the KCODE vseg in all VSL(P,K), and map it to the local copy in all the GPT(P,K). This vseg uses only big pages, and there is no on-demand paging for this type of vseg. With this local mapping all access to the virtual instruction addresses will be simply translated by the MMU to the local physical address.
    105108
    106109'''WARNING''' : there is only one segment defined in the ''kernel.elf'' file, but there is as many KCODE vsegs as the number of clusters. All these vsegs have the same virtual base address and the same size, but the physical adresses (defined in the GPTs) depend on the cluster, because we want to access the local copy.