Disons que nous travaillons avec un système qui a 40 bits d'adresse physique. L'espace d'adressage physique total (en supposant que la mémoire est adressable en octets) est de octets, soit 1 TiB. Et si les adresses virtuelles ont une longueur de 48 bits, cela signifie qu'il y a plus d'adresses disponibles pour la mémoire virtuelle qu'il n'y a d'emplacements dans la mémoire physique.
Cela a du sens pour moi, car les adresses "en excès" peuvent également faire référence aux emplacements de disque dur. Cependant, ce que je ne comprends pas, c'est comment la traduction entre les adresses virtuelles et physiques se produit. Je suppose qu'il existe une cartographie stockée quelque part qui relie les emplacements VAS aux emplacements physiques. S'il y a plus d'emplacements d'adresses virtuelles que d'emplacements physiques, comment tous ces mappages peuvent-ils être stockés en mémoire? Au minimum, vous auriez besoin de 48 bits pour stocker chaque adresse virtuelle, puis de 40 autres pour stocker l'emplacement physique auquel elle est mappée. Donc, évidemment, vous ne pouvez pas simplement stocker un mappage 1: 1 de chaque adresse virtuelle avec son homologue physique, car le mappage de chaque emplacement prendrait plus de mémoire que la mémoire physique elle-même.
Qu'est-ce que je manque exactement ici?
la source
Réponses:
L'astuce pour faire ce travail est la «pagination». Lorsque vous importez des données d'un disque dur dans la mémoire physique, vous n'apportez pas seulement quelques octets. Vous apportez une page entière. 4k octets est une taille de page très courante.
Si vous avez seulement besoin de garder une trace des pages, pas de chaque octet individuel, le mappage devient beaucoup moins cher. Si vous avez un espace d'adressage de 48 bits et des pages de 4096 octets, il vous suffit de suivre laquelle des 2 ^ 36 pages (environ 69 milliards de pages). C'est beaucoup plus simple! L'enregistrement de l'emplacement de toutes les pages est appelé «tableau de pages».
Si vous avez réellement besoin de 1 à 256 To de mémoire, abandonner quelques gigaoctets pour stocker ce tableau de pages n'est pas un gros problème. Dans la pratique, cependant, nous allons faire des choses comme utiliser des tables de pages à plusieurs niveaux , ce qui nous permet d'être un peu plus efficaces, en ne conservant les pages que pour les régions de l'espace d'adressage que nous utilisons réellement.
la source