Changes between Version 16 and Version 17 of page_tables
- Timestamp:
- May 16, 2019, 4:24:55 PM (6 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
page_tables
v16 v17 11 11 * VBASE : Base virtual address 12 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) 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 17 == __2) Page tables and vseg lists__ == … … 19 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 containing at least one thread of process P, these clusters are called "active" clusters. 20 20 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.21 The '''VSL(P,K) ''' (virtual Segment List of process P in cluster K) is replicated in all active clusters. It is used by the kernel when a page fault occurs, it checks that the unmapped virtual address corresponds to a registered segment and determines the segment type. 22 22 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.23 The '''GPT(P,K)''' (Generic Page Table of process P in cluster K) is also replicated in all active clusters. It used by the kernel to store the mapping of each page of each vseg of the process. 24 24 25 === 2.1) Evolution ofPT(P,K) ===25 === 2.1) Dynamic behaviour of the GPT(P,K) === 26 26 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 :27 For a P process, the contents of the different page tables GPT(P,K) can changes over time, and it evolves differently in active clusters : 28 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 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 30 For ''public'' vsegs, only the reference cluster contains the complete mapping state. 31 31 32 === 2.2) Evolutionof VSL(P,K) ===32 === 2.2) Dynamic Behaviour of VSL(P,K) === 33 33 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 cluster s.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 inall active clusters.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 cluster: 35 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 reported into all active clusters. 37 37 38 38 == __3) Registering and destruction of vsegs in VSL(P,K)__ == … … 62 62 This type of vseg is removed from VSL(P,X) when the thread is destroyed. 63 63 64 === 3.4) HEAP===64 === 3.4) ANON === 65 65 This type of vseg is registered in VSL(P,Z), the Z cluster being the owner of process P at its creation. 66 66 It is registered in VSL(P,A,) in an A cluster every time a thread of P is created in this A cluster, and this A cluster didn't have a thread of P yet. … … 95 95 This vseg type is destroyed on munmap() call, using a two-RPCs mechanism just as for the creation. 96 96 97 == __4) Insertion of a n entry in the pages table__ ==97 == __4) Insertion of a PTE (Page Table Entry) in the GPT(P,K)__ == 98 98 99 Adding a new entry in a PT(P,K) for a process P in a cluster K is the result of a page fault, triggered by any thread of process P99 Adding a new entry in a GPT(P,K) for a process P in a cluster K is the result of a page fault, triggered by any thread of process P 100 100 running in cluster K, based on the "on-demand paging" principle. 101 101 All threads of a P process in a K cluster use exclusively the local PT(P,K), and report the page fault to the local kernel instance. … … 115 115 === 4.2) STACK === 116 116 The STACK vsegs associated to the threads placed in a cluster X are mapped in this cluster X and are handled independently from each other in the different clusters. 117 The kernel instance in cluster X has to allocate a physical page and register it in the local PT(P,X) without initializing it.117 The kernel instance in cluster X has to allocate a physical page and register it in the local GPT(P,X) without initializing it. 118 118 IF the requested address is in the last possible page for the vseg, the STACK vseg length can be locally dynamically increased in the local VSL(P,X), 119 119 if there is enough space in the virtual space zone used for the stacks.