web-dev-qa-db-fra.com

Différence entre la table des pages et le répertoire des pages

J'ai souvent entendu le terme espace d'adressage dans les microprocesseurs et les microcontrôleurs Paradigm. Je comprends qu'une adresse est utilisée pour faire référence à un bloc de mémoire particulier dans la mémoire physique (principale).

Si j'ai raison et que l'espace d'adressage est le super ensemble de toutes ces adresses. Droite?

En utilisant la mémoire virtuelle/pagination, nous étendons l'espace d'adressage à l'aide du stockage secondaire.

Dans ce paradigme, qu'est-ce qu'un tableau de pages, une entrée de tableau de pages et un répertoire de pages? Je comprends que la première mémoire p est segmentée et logiquement et ces segments sont divisés en pages. Alors, qu'est-ce qu'un tableau de pages exactement? Un tableau contenant des pages? Et qu'est-ce qu'un répertoire de pages, une super table de tables de pages?

18
techno

Dans l'architecture x86, les répertoires de pages et les tables de pages fournissent ensemble le mappage entre les adresses virtuelles (adresses mémoire utilisées par les applications) et les adresses physiques (emplacements réels dans le matériel de la mémoire physique).

A page est simplement un morceau de mémoire contigu. x86 (32 bits) prend en charge 3 tailles de pages: 4 Mo, 2 Mo et 4 Ko, cette dernière étant la plus couramment utilisée dans les systèmes d'exploitation traditionnels. Un tableau de pages est un tableau d'entrées de 1024 * 32 bits (pouvant convenir à une seule page de 4 Ko). Chaque entrée pointe vers l'adresse physique d'une page. Puisqu'une seule table de pages n'est pas en mesure de représenter la totalité de l'espace d'adressage à elle seule (1024 entrées * 4 Ko = seulement 22 bits d'espace d'adressage), nous avons besoin d'une table de pages de deuxième niveau: a répertoire de pages. Un répertoire de pages se compose également de 1024 * entrées 32 bits (s'insérant à nouveau dans une seule page), chacune pointant vers un tableau de pages. Nous pouvons voir que maintenant 1024 * 1024 * 4Ko = 32 bits et avec cette structure à 3 niveaux, nous sommes capables de mapper tout l'espace d'adressage virtuel de 4 Go.

Lorsque le CPU est invité à accéder à une adresse virtuelle, il utilise les 10 bits de poids fort (31:22) pour indexer dans la table de répertoire de pages (dont l'adresse de base est stockée dans un registre spécial). Les 10 bits de poids fort suivants (21:12) sont utilisés pour indexer dans la table de pages pointée par l'entrée du répertoire de pages. Les 12 bits de poids faible (11: 0) sont finalement utilisés pour indexer un octet dans la page pointée par l'entrée de table de pages.

Dans d'autres systèmes, il peut y avoir plus ou moins de niveaux de table de pages requis, selon la taille de l'espace d'adressage virtuel et les tailles de page prises en charge. Par exemple, x86 avec des pages de 4 Mo n'a besoin que d'un répertoire de pages unique. En mode 64 bits avec des pages de 4 Ko, un système à 4 niveaux est utilisé: a table de niveau de mappage de page 4 contient des entrées qui pointent vers l'un des nombreux répertoires de pages.

Le Intel Architectures Developer's Manual contient beaucoup plus d'informations sur le sujet, en particulier dans les chapitres 3 et 4.

35
peterdn