116 | | Les vsegs STACK associées aux thread placées dans un cluster X sont mappées dans le cluster X, |
117 | | et sont gérés indépendamment les uns des autres dans les différents clusters. |
118 | | Le noyau du cluster X doit allouer une page physique, et l’enregistrer dans la PT (P,X) locale sans l’initialiser. |
119 | | Si l’adresse demandée tombe dans la dernière page disponible pour le vseg, la longueur du vseg STACK peut être dynamiquement |
120 | | localement augmentée dans la VSL(P,X) locale, si il y a de la place dans dans la zone de l’espace virtuel utilisée pour les piles. |
121 | | Comme suggéré par Franck, on peut imaginer une politique d’allocation par dichotomie utilisant deux arguments : MAX_STACK_SIZE |
122 | | définissant la longueur totale de la zone réservée aux piles, et MIN_STACK_SIZE définissant la longueur minimale d’une pile particulière. |
| 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. |
| 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 | if there is enough space in the virtual space zone used for the stacks. |
| 120 | As suggested by Franck, we can imagine an allocation policy by dichotomy using two arguments : |
| 121 | MAX_STACK_SIZE, defining the total length of the zone reserved for the stacks, and |
| 122 | MIN_STACK_SIZE, defining the minimal length of one stack. |
125 | | Ce vseg étant ''distributed'', les pages physiques sont distribuées sur tous les clusters suivant les bits de poids faible du VPN. |
126 | | Si le cluster K qui détecte le défaut de page est différent du cluster propriétaire Z, le noyau du cluster K envoie une PT_MISS_RPC |
127 | | au cluster Z, pour obtenir le PTE stocké dans la PT(P,Z). Les arguments sont le PID et le VPN de la page manquante. |
128 | | Quand il reçoit la réponse, il met à jour la PT(P,K). |
129 | | Si le cluster qui détecte le défaut de page est le cluster propriétaire Z, il sélectionne un cluster cible M à partir des bits |
130 | | de poids faible du VPN, et envoie au cluster M une RPC_PMEM_GET_SPP pour obtenir le PPN d’une page physique du cluster M. |
131 | | En réponse à cette RPC, le noyau du cluster M alloue une page physique et renvoie le PPN de celle-ci. |
132 | | Le noyau du cluster Z s’adresse au système de fichier, pour récupérer le contenu de la page manquante dans le cache du fichier .elf, |
133 | | et initialise la page physique dans M au moyen d’un remote_memcpy(). Finalement, il met à jour la PT (P,Z). |
| 125 | This vseg being ''distributed'', the physical pages are distributed among all the cluster depending on the VPN LSBs. |
| 126 | If the K cluster, that detects the page fault, is different from the owner Z cluster, then the kernel instance of cluster K sends a PT_MISS_RPC |
| 127 | to cluster Z in order to obtain the PTE stored in PT(P,Z). |
| 128 | The arguments are the PID and the VPN of the missing page. |
| 129 | When it receives the response, it updates the PT(P,K). |
| 130 | If the cluster that detects the page fault is the owner Z cluster, it chooses a target M cluster from the VPN LSBs and sends a RPC_PMEM_GET_SPP to cluster M |
| 131 | in order to obtain the PPN of a physical page in cluster M. |
| 132 | In response to this RPC, the kernel instance of cluster M allocates a physical page and returns its PPN. |
| 133 | The kernel instance of cluster Z addresses the file system to retrieve the contents of the missing page in the .elf file cache |
| 134 | and initialized the physical page in M via a remote_memcpy(). Then it updates the PT(P,Z). |
136 | | Ce vseg étant ''distributed'', les pages physiques sont distribuées sur tous les clusters suivant les bits de poids faible du VPN. |
137 | | Si le cluster K qui détecte le défaut de page est différent du cluster propriétaire Z, le noyau du cluster K envoie une PT_MISS_RPC |
138 | | au cluster Z, pour obtenir le PTE stocké dans la PT(P,Z). Les arguments sont le PID et le VPN de la page manquante. |
139 | | Quand il reçoit la réponse, il met à jour la PT(P,K). |
140 | | Si le cluster qui détecte le défaut de page est le cluster propriétaire Z, il sélectionne un cluster cible M à partir des bits |
141 | | de poids faible du VPN, et envoie au cluster M RPC_PMEM_GET_SPP pour obtenir le PPN d’une page physique du cluster M. |
142 | | En réponse à cette RPC, le noyau du cluster M alloue une page physique et renvoie le PPN de celle-ci. |
143 | | Quand le noyau du cluster Z obtient le PPN, il met à jour la PT (P,Z). |
| 137 | This vseg being ''distributed'', the physical pages are distributed among all the cluster depending on the VPN LSBs. |
| 138 | If the K cluster, that detects the page fault, is different from the owner Z cluster, then the kernel instance of cluster K sends a PT_MISS_RPC |
| 139 | to cluster Z in order to obtain the PTE stored in PT(P,Z). |
| 140 | The arguments are the PID and the VPN of the missing page. |
| 141 | When it receives the response, it updates the PT(P,K). |
| 142 | If the cluster that detects the page fault is the owner Z cluster, it chooses a target M cluster from the VPN LSBs and sends a RPC_PMEM_GET_SPP to cluster M |
| 143 | in order to obtain the PPN of a physical page in cluster M. |
| 144 | In response to this RPC, the kernel instance of cluster M allocates a physical page and returns its PPN. |
| 145 | When the kernel of cluster Z obtains the PPN, it updates the PT(P,Z). |
146 | | Ce vseg étant ''localised'', les coordonnées du cluster de mapping M sont enregistrées dans le descripteur de vseg. |
147 | | Si le cluster K qui détecte le défaut de page est différent du cluster propriétaire Z, le noyau du cluster K envoie une PT_MISS_RPC |
148 | | au cluster Z, pour obtenir le PTE stocké dans la PT(P,Z). Les arguments sont le PID et le VPN de la page manquante. |
149 | | Quand il reçoit la réponse, il met à jour la PT(P,X). |
150 | | Si le cluster qui détecte le défaut de page est le cluster propriétaire Z, il envoie au cluster M une RPC_PMEM_GET_SPP pour obtenir |
151 | | le PPN d’une page physique du cluster M. |
152 | | En réponse à cette RPC, le noyau du cluster M alloue une page physique, et renvoie le PPN de celle-ci. |
153 | | Quand le noyau du cluster Z obtient le PPN, il met à jour la PT (P,Z). |
| 148 | This vseg being ''localized'', the mapping M cluster's coordinates are registered in the vseg descriptor. |
| 149 | If the K cluster, that detects the page fault, is different from the owner Z cluster, then the kernel instance of cluster K sends a PT_MISS_RPC |
| 150 | to cluster Z in order to obtain the PTE stored in PT(P,Z). |
| 151 | The arguments are the PID and the VPN of the missing page. |
| 152 | When it receives the response, it updates the PT(P,K). |
| 153 | If the cluster that detects the page fault is the owner Z cluster, it sends a RPC_PMEM_GET_SPP to cluster M |
| 154 | in order to obtain the PPN of a physical page in cluster M. |
| 155 | In response to this RPC, the kernel of cluster M allocated a physical page and returns its PPN. |
| 156 | Whe the kernel of cluster Z obtains the PPN, it updates the PT(P,Z). |