| 13 | | On fait l’hypothèse que - pour chaque processus P - le descripteur du processus P, et certaines structures qu’il contient |
| 14 | | telles que la table des pages (PT) et la liste des vsegs (VSL) sont répliquées dans tous les cluster qui contiennent |
| 15 | | au moins un thread de P. |
| 16 | | |
| 17 | | 1) pour un processus utilisateur P |
| 18 | | |
| 19 | | Un vseg désigne une zone mémoire contigüe dans l’espace virtuel d’un processus, auxquels sont attachés |
| 20 | | certains attributs (droit d’accès, politique de réplication/distribution dans les différents clusters, cachabilité, etc.). |
| 21 | | |
| 22 | | - Un vseg est public quand il peut être accédé par n’importe quel thread du processus, |
| 23 | | 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 |
| 24 | | s”exécutant dans le même cluster que le cluster ou est mappé le vseg. |
| 25 | | |
| 26 | | - Un vseg private est entièrement mappé dans la mémoire physique du cluster K dans lequel il est accessible. |
| 27 | | Il est enregistré dans liste des segments et dans la table des pages du cluster K, mais pas dans les autres clusters. |
| 28 | | |
| 29 | | - Un vseg public est enregistrés dans la liste des segments et dans la table des pages de tous les clusters actifs |
| 30 | | (i.e. tous les clusters qui contiennent un thread de P). |
| 31 | | 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 |
| 32 | | propriétaire du processus (i.e. le cluster Z où a été créé le processus). |
| 33 | | Les réplicas du descripteurs de processus (et surtout les tables |
| 34 | | associées) autres que celui contenu dans le cluster de référence peuvent être considérées comme des caches read-only. |
| 35 | | |
| 36 | | - Un vseg peut être localised (toutes les pages du vseg sont mappées dans le même cluster), |
| 37 | | ou distributed (différentes pages sont mappées dans différents clusters en utilisant par exemple les bits de poids |
| 38 | | faibles comme clé de distribution). Les vsegs privés sont toujours localised. |
| 39 | | |
| 40 | | Il existe sept types de vsegs, correspondant à des politiques de réplication/distribution différentes : |
| 41 | | |
| 42 | | - CODE : private / plusieurs vsegs / mêmes adresses virtuelles, même contenu, un vseg par cluster actif |
| 43 | | - STACK : private / plusieurs vsegs / un vseg par thread de P, mappé dans le cluster hébergeant le thread |
| 44 | | - DATA : public / un seul vseg / distributed |
| 45 | | - HEAP : public / un seul vseg / distributed |
| 46 | | - REMOTE : public / plusieurs vsegs / chaque vseg localised (dans le cluster concerné par le remote_malloc(x,y) ) |
| 47 | | - FILE : public / plusieurs vsegs / chaque vseg localised (dans le cluster contenant le fichier concerné par le mmap() ) |
| 48 | | - ANON : public / plusieurs vsegs / chaque vseg distributed (associé à un mmap() anonyme ) |
| 49 | | |
| 50 | | 2) pour le noyau, |
| 51 | | |
| 52 | | Les différentes instances du noyau ne travaillant qu’en adressage physique, les segments kernel sont définis dans |
| 53 | | l’espace d’adressage physique. |
| 54 | | |
| 55 | | - un segment kernel est private quand il ne peut être accédé que par l’instance locale du noyau. |
| 56 | | il est public quand il peut être accédé par n’importe quel instance du noyau. |
| 57 | | |
| 58 | | Dans un segment public, le noyau peut définir des structures répliquées homologues. |
| 59 | | Si N est le nombre de clusters, une structure répliquées homologue est un ensemble de N structures identiques, |
| 60 | | de longueur fixe, implantées à des adresses physiques ne différant entre elles que par les bits de poids fort |
| 61 | | définissant les coordonnées du cluster. |
| 62 | | |
| 63 | | On identifie (pour l’instant) les segments suivants |
| 64 | | |
| 65 | | - KDATA : private |
| 66 | | - KCODE : private |
| 67 | | - KSTACK : private |
| 68 | | - KHEAP : private |
| 69 | | - SHARED : public |
| 70 | | |
| 71 | | ——————————————————————————————— |
| 72 | | B) Construction dynamique des tables de pages d’un processus |
| 73 | | ——————————————————————————————— |
| | 13 | 2) [wiki:page_tables Construction dynamique des tables de pages] |