7 | | On fait l’hypothèse que - pour chaque processus P - le descripteur du processus P, et certaines structures qu’il contient |
8 | | telles que la table des pages (PT) et la liste des vsegs (VSL) sont répliquées dans tous les cluster qui contiennent |
9 | | au moins un thread de P. |
10 | | |
11 | | 1) pour un processus utilisateur P |
12 | | |
13 | | Un vseg désigne une zone mémoire contigüe dans l’espace virtuel d’un processus, auxquels sont attachés |
14 | | certains attributs (droit d’accès, politique de réplication/distribution dans les différents clusters, cachabilité, etc.). |
15 | | |
16 | | - Un vseg est public quand il peut être accédé par n’importe quel thread du processus, |
17 | | quel que soit le cluster dans lequel le thread s’exécute. Il est private quand il n’est accédé que par les threads |
18 | | s”exécutant dans le même cluster que le cluster ou est mappé le vseg. |
19 | | |
20 | | - Un vseg private est entièrement mappé dans la mémoire physique du cluster K dans lequel il est accessible. |
21 | | Il est enregistré dans liste des segments et dans la table des pages du cluster K, mais pas dans les autres clusters. |
22 | | |
23 | | - Un vseg public est enregistrés dans la liste des segments et dans la table des pages de tous les clusters actifs |
24 | | (i.e. tous les clusters qui contiennent un thread de P). |
25 | | Pour maintenir la cohérence entre les tables de pages, chaque vseg public possède un cluster de référence, qui est le cluster |
26 | | propriétaire du processus (i.e. le cluster Z où a été créé le processus). |
27 | | Les réplicas du descripteurs de processus (et surtout les tables |
28 | | associées) autres que celui contenu dans le cluster de référence peuvent être considérées comme des caches read-only. |
29 | | |
30 | | - Un vseg peut être localised (toutes les pages du vseg sont mappées dans le même cluster), |
31 | | ou distributed (différentes pages sont mappées dans différents clusters en utilisant par exemple les bits de poids |
32 | | faibles comme clé de distribution). Les vsegs privés sont toujours localised. |
| 10 | |
| 11 | == 1) pour un processus utilisateur P == |
| 12 | |
| 13 | Un '''vseg''' désigne une zone mémoire contigüe dans l’espace virtuel d’un processus, auxquels sont attachés certains attributs (droit d’accès, politique de réplication/distribution dans les différents clusters, cachabilité, etc.). |
| 14 | |
| 15 | Pour chaque processus P, le descripteur du processus, et certaines structures qu’il contient telles que la table des pages (PT) et la liste des vsegs (VSL) sont répliquées dans tous les cluster qui contiennent au moins un thread de P. |
| 16 | |
| 17 | * Un vseg est ''public'' quand il peut être accédé par n’importe quel thread du processus, quel que soit le cluster dans lequel le thread s’exécute. Il est ''private'' quand il n’est accédé que par les threads exécutant dans le même cluster que le cluster ou est mappé le vseg. |
| 18 | |
| 19 | * Un vseg ''private'' est entièrement mappé dans la mémoire physique du cluster K dans lequel il est accessible. Il est enregistré dans liste des segments et dans la table des pages du cluster K, mais pas dans les autres clusters. |
| 20 | |
| 21 | * Un vseg ''public'' est enregistré dans la liste des segments et dans la table des pages de tous les clusters actifs (i.e. tous les clusters qui contiennent un thread de P). Pour maintenir la cohérence entre les tables de pages, chaque vseg ''public'' possède un cluster de référence, qui est le cluster propriétaire du processus (i.e. le cluster Z où a été créé le processus). Les réplicas du descripteurs de processus (et les tables associées) autres que celui contenu dans le cluster de référence peuvent être considérées comme des caches read-only. |
| 22 | |
| 23 | * Un vseg peut être ''localised'' (toutes les pages du vseg sont mappées dans le même cluster), ou ''distributed'' (différentes pages du même vseg sont mappées dans différents clusters en utilisant par exemple les bits de poids faibles comme clé de distribution). Un vseg ''private'' est toujours ''localised''. |
36 | | - CODE : private / plusieurs vsegs / mêmes adresses virtuelles, même contenu, un vseg par cluster actif |
37 | | - STACK : private / plusieurs vsegs / un vseg par thread de P, mappé dans le cluster hébergeant le thread |
38 | | - DATA : public / un seul vseg / distributed |
39 | | - HEAP : public / un seul vseg / distributed |
40 | | - REMOTE : public / plusieurs vsegs / chaque vseg localised (dans le cluster concerné par le remote_malloc(x,y) ) |
41 | | - FILE : public / plusieurs vsegs / chaque vseg localised (dans le cluster contenant le fichier concerné par le mmap() ) |
42 | | - ANON : public / plusieurs vsegs / chaque vseg distributed (associé à un mmap() anonyme ) |
| 27 | || type || || || nombre || commentaire || |
| 28 | || CODE || private || localised || un par cluster actif || mêmes adresses virtuelles, même contenu || |
| 29 | || STACK || private || localised || un par thread || dans le cluster hébergeant le thread || |
| 30 | || DATA || public || distributed || un par processus || données globales partagées || |
| 31 | || HEAP || public || distributed || un par processus || utilisé pour le malloc() standard || |
| 32 | || REMOTE || public || localised || un par cluster actif || utilisé par le remote_malloc(x,y) || |
| 33 | || FILE || public || localised || un par MMAP(file) || dans le cluster contenant le fichier file || |
| 34 | || ANON || public || distributed || un par MMAP(anon) || équivalent au type HEAP || |