Changes between Version 40 and Version 41 of replication_distribution
- Timestamp:
- Jun 26, 2018, 4:24:53 PM (6 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
replication_distribution
v40 v41 11 11 To actually control data placement on the physical memory banks, the kernel uses the paged virtual memory MMU to map a virtual segment to a given physical memory bank. 12 12 13 This replication / distribution policy is implemented by the Virtual Memory Manager (in the [https://www-soc.lip6.fr/trac/almos-mkh/browser/trunk/kernel/mm/vmm.h vmm.h] and [https://www-soc.lip6.fr/trac/almos-mkh/browser/trunk/kernel/mm/vmm.c vmm.c] files). 13 __''This replication / distribution policy is implemented by the Virtual Memory Manager (in the [https://www-soc.lip6.fr/trac/almos-mkh/browser/trunk/kernel/mm/vmm.h vmm.h] and [https://www-soc.lip6.fr/trac/almos-mkh/browser/trunk/kernel/mm/vmm.c vmm.c] files).''__ 14 14 15 15 A '''vseg''' is a contiguous memory zone in the process virtual space, where all adresses in this '''vseg''' can be accessed by the process without segmentation violation: if the corresponding is not mapped, the page fault will be handled by the kernel, … … 26 26 * A '''public''' vseg can be '''localized''' (all vseg pages are mapped in the same cluster), or '''distributed''' (different pages are mapped on different clusters, using the virtual page number (VPN) least significant bits as distribution key). A '''private''' vseg is always '''localized'''. 27 27 28 ALMOS-MK defines six vseg types :28 ALMOS-MK defines six vseg types in [https://www-soc.lip6.fr/trac/almos-mkh/browser/trunk/kernel/mm/vseg.h#L41 vseg_type_t]: 29 29 || Type || || || Access || Replication || Placement || Allocation policy in user space || 30 30 || STACK || private || localized || Read Write || one physical mapping per thread || same cluster as thread using it || dynamic (one stack allocator per cluster) || … … 33 33 || ANON || public || localized || Read Write || same mapping for all threads || same cluster as calling thread || dynamic (one heap allocator per process || 34 34 || FILE || public || localized || Read Write || same mapping for all threads || same cluster as the file cache || dynamic (one heap allocator per process) || 35 || REMOTE nn|| public || localized || Read Write || same mapping for all threads || cluster defined by user || dynamic (one heap allocator per process) ||35 || REMOTE || public || localized || Read Write || same mapping for all threads || cluster defined by user || dynamic (one heap allocator per process) || 36 36 37 37 1. '''CODE''' : This private vseg contains the user application code. ALMOS-MK creates one CODE vseg per active 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 active cluster X, the CODE vseg is localized, and physically mapped in cluster X. … … 62 62 63 63 === The ''elf'' zone === 64 It is located on top of the '''utils''' zone, and starts at address defined by the [https://www-soc.lip6.fr/trac/almos-mkh/browser/trunk/kernel/kernel_config.h#L296 CONFIG_VMM_ELF_BASE] parameter. It contains the ''text'' (CODE type) and ''data'' (DATA type) vsegs, defining the process binary code and global data. The actual vsegs base addresses and sizes are defined in the .elf file and reported in the boot_infostructure by the boot loader.64 It is located on top of the '''utils''' zone, and starts at address defined by the [https://www-soc.lip6.fr/trac/almos-mkh/browser/trunk/kernel/kernel_config.h#L296 CONFIG_VMM_ELF_BASE] parameter. It contains the ''text'' (CODE type) and ''data'' (DATA type) vsegs, defining the process binary code and global data. The actual vsegs base addresses and sizes are defined in the .elf file and reported in the [https://www-soc.lip6.fr/trac/almos-mkh/browser/trunk/tools/arch_info/boot_info.h#L103 boot_info_t] structure by the boot loader. 65 65 66 66 === The ''heap'' zone ===