Changes between Version 23 and Version 24 of replication_distribution
- Timestamp:
- Jan 10, 2017, 10:27:26 AM (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
replication_distribution
v23 v24 21 21 == 1) User segments types and attributes == 22 22 23 * A vseg is '''public''' when it can be accessed by any thread T of the process, whatever the cluster running the thread T. It is '''private''' when it can only be accessed by the threads running in the cluster containing the physical memory bank where this vseg is mapped. A '''private''' vseg is entirely mapped in one single cluster K. For a '''public''' vseg ALMOS-MK implement a global mapping : In all clusters, a given virtual address is mapped to the same physical address. For a '''private''' v essel, ALMOS-MK implementa local mapping : the same virtual address can be mapped to different physical addresses, in different clusters.23 * A vseg is '''public''' when it can be accessed by any thread T of the process, whatever the cluster running the thread T. It is '''private''' when it can only be accessed by the threads running in the cluster containing the physical memory bank where this vseg is mapped. A '''private''' vseg is entirely mapped in one single cluster K. For a '''public''' vseg ALMOS-MK implement a global mapping : In all clusters, a given virtual address is mapped to the same physical address. For a '''private''' vseg, ALMOS-MK implements a local mapping : the same virtual address can be mapped to different physical addresses, in different clusters. 24 24 * 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'''. 25 25 26 26 ALMOS-MK defines seven vseg types: 27 27 || type || || || || 28 || STACK || private || localized || Read Write || one physical mapping per thread || 28 29 || CODE || private || localized || Read Only || one physical mapping per cluster || 29 30 || DATA || public || distributed || Read Write || one single physical mapping || 30 31 || HEAP || public || distributed || Read Write || one single physical mapping || 31 || STACK || private || localized || Read Write || one physical mapping per thread ||32 32 || ANON || public || localized || Read Write || one per mmap(anon) || 33 33 || FILE || public || localized || Read Write || one per mmap(file) || … … 35 35 36 36 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 1. '''DATA''' : This vseg contains the user application global data. ALMO X-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.38 1. '''HEAP''' This vseg is actually used by the malloc() library. ALMO X-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.37 1. '''DATA''' : This vseg contains the user application global data. ALMOS-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. 38 1. '''HEAP''' This vseg is actually used by the malloc() library. ALMOS-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. 39 39 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. 40 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.