Le point clé de la pagination est qu'elle traite des «morceaux» de mémoire.
C'est une carte, une fonction, qui traduit les adresses virtuelles en adresses physiques mais pas sur une base adresse par adresse. Plutôt, un «morceau» de adresses virtuelles continues est traduit ensemble dans un autre continu "morceau" d'adresses, maintenant physiques.
Vous pouvez le considérer comme une "traduction" ou un "shuffle" de "morceaux" de mémoire.
Le terme correct pour "morceau" est la page.
Si essayer de faire un mappage d'échantillon, vous pouvez voir que chaque page contient un ensemble d'adresses qui ont toutes une particularité: leurs bits inférieurs ne changent pas lors du passage de virtuel à physique. Les bits supérieurs sont arbitraires.
Cette dichotomie de la valeur d'adresse définit Offset et Page/Numéro de châssis.
Le décalage est la partie de la valeur d'adresse qui ne subit aucune traduction. Dans une page de 4Kio il y a 4096 adresses, chacune avec son décalage, de sorte que le décalage a une taille log (4096) = log (2) = 12 * log (2) = 12 bits.
En bref, la taille de la page détermine la taille du décalage.
Il est nécessaire pour fractionner la mémoire en pages et non en mots ou en octets, ou dans une autre vue, il est nécessaire de regrouper les adresses à traduire en pages.
Sans les pages, les métadonnées utilisées pour la traduction, en jargon les tables de pages de divers niveaux, occuperaient plus de mémoire que celle qui est en cours de traduction!
Les décalages sont relatifs à leur page/trame grâce à la façon dont ils sont définis: le décalage 1024 (en hex 400h) dans la trame 8 signifie l'adresse 8000h + 400h = 8400h; si la page est mappée sur la trame 12, le décalage 1024 est toujours de 1024 octets après le début de la trame, 0c000h + 400h = 0c400h.
En tant qu'adresse, un décalage désigne généralement un octet, un événement dans l'architecture où les octets ne sont pas adressables. Cependant, ceci n'est pas une convention standard, pour savoir si un décalage désigne un mot ou un octet (par exemple, si le décalage 10 de l'image 0 est l'octet 40 ou l'octet 10), consultez le manuel d'architecture. Les premières sections sont généralement consacrées à l'établissement d'une terminologie à utiliser tout au long du livre.
La pagination se produit avant que la CPU accède à la mémoire, vous pouvez considérer cela comme un processus de haut niveau. L'unité qui accède à la mémoire/au bus n'en est généralement pas consciente, en tant que telle la CPU lit les données que l'instruction lui dit de lire (un mot, un octet, etc.).
On parle de déplacer une page parce qu'une page est la plus petite unité qui peut être caractérisée.
Vous pouvez marquer une page comme non présente, mais pas un mot. Vous pouvez faire une page en lecture seule mais pas un mot.
Si vous avez besoin de mapper, disons 16 octets, vous devez encore mapper une page entière car 16 octets ne sont pas caractérisables. Donc, nous pourrions aussi bien lire toute une page. Lorsqu'un défaut de page se produit, cela signifie que la page consultée est, à tout niveau dans les tables de pages, non présente.
Cela peut signifier un large éventail de choses, du fait que le bit Present a été simplement basculé (avec la page toujours là), au fait que la page a été sauvegardée sur le disque et mise à zéro en mémoire.
Étant donné que la fonction de mappage est total, ce qui signifie que chaque valeur est une valeur valide, l'UC a besoin d'un moyen de savoir lorsqu'une valeur n'est pas valide.
Le bit Present fait ceci: dites au CPU qu'une traduction ne doit pas être effectuée et qu'une exception doit être levée à la place.
Le système d'exploitation utilise cette exception pour être averti lorsqu'une page est nécessaire, il n'a pas besoin de réaffecter le mappage à une autre page ou de mettre à zéro la mémoire.
Lorsque les gens disent qu'une page est enlevé ils signifient qu'il est retiré de la cartographie, tous les OS modernes aussi zéro-d la page pour empêcher la fuite d'informations à d'autres processus cependant. Par conséquent, si une trame physique n'est pas mappée, cela ne signifie pas qu'une autre page d'un autre processus la mappe, cela signifie simplement que cette plage d'adresses n'est pas accessible.
Comme indiqué ci-dessus, il y a beaucoup de raisons pour un système d'exploitation de le faire, y compris la protection.