2016-11-28 3 views
1

Autant que je sache, la CPU génère toujours une adresse virtuelle constituée de 2 parties: le numéro de page et le décalage de page. Le numéro de page est utilisé pour l'indexation de la table de pages (le mappage correspondant donne l'adresse de départ de l'image dans la RAM). Maintenant, veuillez considérer les questions suivantes. Considérez que la taille des mots de la machine est de 4 octets et que la taille de la page est égale à la taille de la trame = 4096 octets.Utilisation de l'offset dans les adresses virtuelles

  1. en supposant que le numéro de page est 4 et le décalage est 3. Ensuite, Page 4 dans la mémoire logique des cartes pour encadrer 8 dans la mémoire virtuelle. Cela signifie que l'adresse de début de la trame est 8.
  2. Maintenant, chaque trame contiendra 4096/4 = 1024 mots. Est-ce que le décalage implique un mot à l'intérieur du cadre, puisque la machine va toujours chercher un mot à la fois? Qu'est-ce que je veux dire est-ce que cela signifie le troisième mot dans l'image 8?
  3. Le mot particulier donné à la CPU ou à la totalité de la trame? Si ancien, alors pourquoi tout le monde parle de transfert en termes de cadres et de pages plutôt que de mots?
  4. Supposons qu'une erreur de page se produise. Ce que cela signifie est que la page particulière n'est pas en mémoire. Cela signifie-t-il que l'adresse physique mappée contient une autre page? Est-ce que le mappage existe même dans un tel cas lorsque le bit invalide est 1.

Est-ce que quelqu'un peut éclaircir les choses pour moi? Un moment, j'ai l'impression de l'avoir, et la suivante, je tombe dans un labyrinthe.

Répondre

4

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.

Shuffing of "chunks" of memory

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.

1

Vous avez un peu de recul. Le système d'exploitation définit un espace d'adressage logique pour chaque processus. L'espace d'adressage logique est divisé en unités de mémoire appelées PAGES. Le système d'exploitation mappe logiquement les pages de l'adresse sur des cadres de page physiques ou sur un stockage secondaire. Si le système d'exploitation mappe des pages sur le stockage secondaire, il utilise la mémoire virtuelle.

À l'époque ancienne, tous les systèmes qui effectuaient la traduction de la mémoire logique effectuaient toujours des mappages de mémoire virtuelle sur le stockage secondaire. C'est pourquoi les termes traduction de mémoire virtuelle et traduction de mémoire logique sont souvent confondus. De nos jours, il est de plus en plus courant d'avoir une traduction logique sans mémoire virtuelle.

Tous les accès d'adresse via un processus sont des adresses logiques. Le processeur traduit l'adresse logique en images de page. Si la page logique existe mais qu'elle est mappée sur le stockage secondaire, l'accès à cette page déclenche une erreur de page. Le système d'exploitation doit gérer le problème, remapper la page logique/virtuelle sur un cadre de page physique; charger les données du stockage secondaire dans le cadre de la page; et redémarrez les instructions.

  1. en supposant que le numéro de page est 4 et le décalage est 3. Ensuite, Page 4 dans la mémoire logique des cartes pour encadrer 8 dans la mémoire virtuelle. Cela signifie que l'adresse de début de la trame est 8.

Cela n'a aucun sens. Une page logique est virtuelle lorsqu'elle est mappée sur un stockage secondaire. Si le numéro de page est 4 la 4ème page logique peut:

a) ont pas tout mappage (violation d'accès)

b) carte à un cadre de page physique

c) carte à un stockage secondaire (mémoire virtuelle)

  1. maintenant, chaque image contiendra 4096/4 = 1024 mots. Est-ce que le décalage implique un mot à l'intérieur du cadre, puisque la machine va toujours chercher un mot à la fois? Qu'est-ce que je veux dire est-ce que cela signifie le troisième mot dans l'image 8?

Dans presque tous (sinon tous) processeurs, il n'y a pas de mots de mémoire; seulement octets. Le bus système récupère de la mémoire et la "taille de mot" du bus peut être (et est souvent) différente de la "taille de mot" du processeur.

  1. Le mot particulier donné à la CPU ou à l'intégralité de la trame? Si ancien, alors pourquoi tout le monde parle de transfert en termes de cadres et de pages plutôt que de mots?

Le processus voit des transferts de tailles liées à l'instruction en cours d'exécution. La taille de l'opérande peut être plus grande ou plus petite que le mot machine. Le bus transfère les données en mémoire et cette taille est souvent différente de la taille des mots de la machine.

Supposons qu'une erreur de page se produise. Ce que cela signifie est que la page particulière n'est pas en mémoire. Cela signifie-t-il que l'adresse physique mappée contient une autre page? Le mappage existe-t-il même dans un tel cas lorsque le bit non valide est 1.

J'ai donné ci-dessus les trois possibilités pour les mappages de pages logiques. Comment ceux-ci sont indiqués sont spécifiques au système. Certains systèmes utilisent 2 bits pour indiquer a, b ou c. D'autres utilisent un seul bit pour indiquer (b) et exigent que le système d'exploitation détermine si c'est (a) ou (c).

Si une erreur de page est déclenchée ou non dépend de l'état de la table de pages.

Généralement, un défaut de page signifie que le cadre de la page n'est pas en mémoire. Cependant, il est souvent possible que le cadre de page physique soit en mémoire mais ne soit pas mappé dans la table de pages (une erreur de page douce). (Cela se produit lorsque le système d'exploitation n'a pas mappé les cadres de page pour les libérer mais ne les a pas réaffectés.) Dans ce cas, le système d'exploitation doit simplement mettre à jour le tableau de pages pour pointer sur le cadre de page. charger depuis le stockage secondaire).