Changes between Version 9 and Version 10 of page_tables
- Timestamp:
- Sep 17, 2018, 10:46:26 AM (6 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
page_tables
v9 v10 1 = Implémentation des tables de pages et des listes de vseg=1 = Page tables and vsegs lists implementation = 2 2 3 3 [[PageOutline]] 4 4 5 == __1) Descripteur de vseg__ ==5 == __1) vseg descriptors__ == 6 6 7 Un descripteur de vseg contient les informations suivantes :7 A vseg descriptor contains the following fields : 8 8 9 * TYPE : définit la politique de réplication/distribution(CODE / STACK / DATA / HEAP / HEAPXY / FILE / ANON)10 * FLAGS : définit les droits d’accès11 * VBASE : adresse virtuelle de base12 * LENGTH : longueur du segment13 * BIN : pathname to the .elf file. (seulement pour les types DATA et CODE)14 * X,Y : coordonnées du cluster où est mappé le vseg (seulement pour un vseg localised)15 * MAPPER : radix-tree cont enant les pages physiques allouées à ce vseg (seulement pour les types CODE, DATA, FILE).9 * TYPE : Defines the replication/distribution policy (CODE / STACK / DATA / HEAP / HEAPXY / FILE / ANON) 10 * FLAGS : Defines access rights 11 * VBASE : Base virtual address 12 * LENGTH : Segment length 13 * BIN : Pathname to the .elf file. (only for DATA and CODE types) 14 * X,Y : Coordinates of the cluster where the vseg is mapped (only for a localized vseg) 15 * MAPPER : radix-tree containing the physical pages allocated to this vseg (only for CODE, DATA and FILE types) 16 16 17 == __2) Tables de pages et listes de vsegs__ ==17 == __2) Page tables and vseg lists__ == 18 18 19 Les différentes informations associées à un processus P sont regroupées dans le descripteur de processus (structure process_t). Ce descripteur de processus, ainsi que les structures qu'il contient, est - partiellement - répliqué dans tous les clusters contenant au moins un thread du processus P, appelés clusters actifs. 19 The various information associated to a process P can be found in the process descriptor (process_t structure). This process descriptor and the structures within are - partly - replicated in all clusters contaning at least one thread of process P, these clusters are called "active" clusters. 20 20 21 La table des pages est utilisée par le noyau pour stocker le mapping de chaque page de chaque vseg d'un processus. cette table des pages fait partie des informations - partiellement - répliquées, et nous appelons PT(P,K) la table des pages du processus P dans le cluster K. 21 The page table is used by the kernel to store the mapping for each page of each vseg of a process. The page table belongs to these - partly - replicated information, we will call PT(P,K) the page table of process P in cluster K. 22 22 23 La liste des vsegs définis pour un processus est utilisée par le noyau en cas de défaut de page pour vérifier que l'adresse virtuelle non mappée correspond à un segment défini, et pour déterminer le type du segment. Cette liste fait également partie des informations - partiellement - répliquées , et nous appelons VSL(P,K) la liste des vsegs du processus P dans lecluster K.23 The vsegs list of a process is used by the kernel when a page fault occurs, it checks that the unmapped virtual address corresponds to a defined segment and determines the segment type. This list is also one of the - partly - replicated information and we will call VSL(P,K) the vsegs list of process P in cluster K. 24 24 25 === 2.1) Evolution of PT(P,K) === 25 26 26 === 2.1) Evolution des PT(P,K) === 27 For a P process, the contents of the different page tables PT(P,K) changes over time, and it evolves differently in active clusters : 28 On the one hand, the P page tables content evolves dynamically in the clusters depending on the page faults triggered by the thread of P running in each cluster. 29 Moreover, the ''private'' segments mapping (CODE and STACK types) differs from one cluster to another, since a same virtual address corresponds to different addresses depending on the cluster. 30 For ''public'' vsegs, only the reference cluster contains the complete mapping state. 27 31 28 Pour un même processus P, le contenu des différentes tables de pages PT(P,K) évolue au cours du temps, et il évolue différemment dans les différents clusters actifs: 29 D'une part, le contenu des tables de P évolue dynamiquement dans les clusters en fonction des défauts de pages causés par les threads de P s’exécutant dans chaque cluster. 30 De plus le mapping des segments ''private'' (types CODE et STACK) varie d’un cluster à un autre, puisqu'une même adresse virtuelle correspond à des adresses différentes suivant les clusters. 31 Pour ce qui concerne les vsegs ''public'', seul le cluster de référence contient l’état complet du mapping. 32 === 2.2) Evolution of VSL(P,K) === 32 33 33 === 2.2) Evolution des VSL(P,K) === 34 For a P process, the contents of the various vsegs lists VSL(P,K) changes over time too, and is not the same in all clusters. 35 Indeed, the vsegs list must be identical for ''public'' vsegs, but each ''private'' vseg is registered only in the cluster it belongs to. 36 For ''public'' vsegs, every dynamic insertion of a new vseg or extension of an existing vseg must be echoed in all active clusters. 34 37 35 Pour un même processus P, le contenu des différentes listes de vsegs VSL(P,K) évolue au cours du temps, et n’est pas identique dans tous les clusters. 36 En effet les listes de vsegs doivent être identiques pour ce qui concerne les vsegs ''public'', mais chaque vseg ''private'' n’est enregistré que dans le cluster auquel il appartient. 37 Pour ce qui concerne les vsegs ''public'', tout ajout dynamique d’un nouveau vseg ou toute extension d'un vseg existant doit être répercuté dans tous les clusters actifs. 38 39 == __3) Enregistrement et destruction des vsegs dans les VSL(P,K)__ == 38 == __3) Registering and destruction of vsegs in VSL(P,K)__ == 40 39 41 La politique d’enregistrement et de destruction des vsegs dans les VSL(P,X) dépend du type de vseg:40 The registering and destruction policy in the VSL(P,K) depends on the vseg type : 42 41 43 42 === 3.1) DATA ===