Comment la table de page multi-niveaux économise-t-elle l'espace mémoire?

j'essaie de comprendre comment la table de page multi-niveaux sauve la mémoire. D'après ce que j'ai compris, le tableau à plusieurs niveaux dans total consomme plus de mémoire que le tableau à un seul niveau.

exemple: envisagez un système de mémoire avec la taille de page 64KB et processeur de 32 bits. Chaque entrée dans la table de page est de 4 Bytes.

table de Page à niveau unique : 16 (2^16 = 64ko) les bits sont nécessaires pour représenter le décalage de page. Ainsi les 16 bits restants sont utilisés pour indexer dans la table de page. Si

*Taille de la table de page = 2^16 (nombre de pages) * 4 Octets(la Taille de chaque entrée de table de page) = 2^18 Octets*

tableau de Page à plusieurs niveaux: dans le cas d'une table de page à deux niveaux, utilisons les 10 premiers bits les plus significatifs pour indexer dans la table de page de premier niveau. Les 10 bits suivants pour indexer dans la table de page de deuxième niveau, qui a le nombre de page à des mappages de nombre de cadre. Le reste (12 bits) représente le décalage de la page.

taille d'une table de page de deuxième niveau = 2^10 (Nombre d'entrées) * 4 octets (Taille de chaque entrée) = 4 Ko

taille Totale de l'ensemble de la deuxième page de niveau tables = 2^10 (# de deuxième niveau des tables de page) * 4 KO (Taille de chaque deuxième niveau de la table des pages) = 4 MO

Taille de la première page de niveau table = 2^10 (nombre d'entrées) * (10/8) Octets (la Taille de chaque entrée) = 1.25 KB

Total de la mémoire nécessaire pour stocker les premier et deuxième niveaux de tables de page = 4 MO + 1.25 KB

Donc nous avons besoin de plus de mémoire pour stocker des tables de page à plusieurs niveaux.

si c'est le cas, comment les tables multi-niveaux peuvent-elles sauver de l'espace mémoire ?

24
demandé sur Anil Kumar K K 2015-04-06 10:58:27

3 réponses

  1. dans singlelevel pagetable vous avez besoin de la table entière pour accéder même une petite quantité de données(moins de références de mémoire). I. e 2^20 pages chaque PTE occupant 4 octets comme vous l'avez supposé.

L'espace requis pour accéder à n'importe quelle donnée est 2^20 * 4bytes = 4MB

  1. pages de pagination est à plusieurs niveaux de pagination.Dans le paging à plusieurs niveaux, il est plus spécifique, vous pouvez avec l'aide de l'organisation à plusieurs niveaux décider quelle page spécifique parmi les 2^20 pages vos données existent, et sélectionner il. Donc ici vous n'avez besoin que de cette page spécifique pour être dans la mémoire pendant que vous exécutez le processus.

dans le cas de 2 niveaux dont vous avez parlé, vous avez besoin du premier niveau pagetable et ensuite 1 des 2^10 pagetables dans le second niveau. Si, 1er niveau Taille = 2^10 * 4 bytes = 4KB Deuxième niveau nous n'avons besoin que de 1 sur les 2^10 pagetables = so size is 2^10 * 4bytes = 4KB

taille Totale requise est maintenant : 4KB + 4 KO = 8KO.

comparaison finale est de 4 Mo contre 8 Ko .

24
répondu Sai 2015-05-27 01:36:39

voici un avantage principal des tables de page à plusieurs niveaux:

d'abord, découper le tableau de page en unités de taille de page; ensuite, si une page entière de page-table entries (PTEs) est invalide, ne pas allouer cette page du tableau de page du tout.

Source. (Article 20.3)

Donc la quantité de mémoire nécessaire pour la table de pages n'est pas dictée par la taille de l'espace d'adressage, mais par la quantité de mémoire que le processus est utiliser.

en outre, la page des entrées de table de page peut elle - même être pagée si la mémoire physique est pleine-seul le répertoire de page doit être toujours présent dans la mémoire.

6
répondu Craig S. Anderson 2015-04-06 08:29:33

les tables multi-niveaux sont principalement nécessaires parce que si la structure de la mémoire dans Intel-land.

supposons que vous ayez un système 32 bits et que vous divisiez l'espace d'adresse de façon à ce que le haut ait soit réservé au système et que la moitié inférieure soit réservée aux adresses des utilisateurs.

avec une telle division, vous auriez besoin de 2 Go d'entrées de table de page contiguës dans chaque table de page d'utilisateur pour atteindre les adresses système.

La vieille VAX à une approche très simple. Il divisé L'espace d'adresse de 4 Go en 4 régions (2 utilisateurs, 1 système, un inutilisable). Les trois zones utilisables avaient leur propre table de page.

chaque région avait son propre tableau de page. Parce qu'il y avait un espace d'adresse système dédié, les tables de page d'utilisateur pouvaient être des adresses virtuelles de sorte qu'elles n'auraient pas besoin de mémoire contiguë.

la première phase de la traduction d'adresse était de regarder les 2 bits d'adresse de haut ordre pour sélectionner la table de page à utiliser.

au Lieu d'avoir tableaux de page séparés, Intel-land brise le tableau de page vers le haut. Cela atténue les problèmes de (1) Avoir Besoin d'une mémoire contiguë pour la table; (2) Avoir Besoin de la table de page pour couvrir tout l'espace d'adresse; (3) permet de définir des adresses du noyau qui peuvent être partagées par tous les processus.

0
répondu user3344003 2015-04-10 18:46:59