traduire adresse virtuelle et adresse physique
La page suivante table est pour un système de 16 bits adresses virtuelles et physiques et à 4 096 octets pages. La référence bit est mis à 1 lorsque la page a été référencé. Périodiquement, un thread remet à zéro toutes les valeurs de la référence bits.Tous les chiffres sont fournis en décimal.
Je veux convertir le suivant adresses virtuelles (en hexadécimal) de l'équivalent des adresses physiques. Je tiens également à définir la référence de peu pour que l'entrée correspondante dans la table des pages.
• 0xE12C
• 0x3A9D
• 0xA9D9
• 0x7001
• 0xACA1
Je connais les réponses mais je veux savoir comment puis-je obtenir ces réponses:
0xE12C → 0x312C
0x3A9D → 0xAA9D
0xA9D9 → 0x59D9
0x7001 → 0xF001
0xACA1 → 0x5CA1
J'ai trouvé et essayé Cette mais il ne m'aide pas beaucoup.
OriginalL'auteur Ruan | 2016-10-27
Vous devez vous connecter pour publier un commentaire.
C'est une donnée que d'adressage virtuel est de 16 bits de long.
Donc, il y a 2^16 adresses dans l'espace d'adressage virtuel.
Taille de la Page est donnée pour 4 KO ( il y a 4K (4 * (2 ^ 10) )les adresses dans une page), de sorte que le nombre de pages sera ( 2^16 ) /( 2 ^ 12 ) = 2 ^ 4.
À l'adresse de chaque page de 4 bits sont requis.
Les 4 bits de poids fort de l'adresse virtuelle désigne le numéro de la page en cours de visée et 12 bits sera le décalage de page.
Une chose à retenir est la taille de page (dans l'espace d'adressage virtuel ) est toujours la même que la taille de l'image dans la mémoire principale. D'où la dernière de 12 bits restera même dans l'adresse physique comme celle de l'adresse virtuelle.
Pour obtenir l'adresse de cadre dans la mémoire principale de l'utiliser juste les 4 premiers bits.
Exemple: Considérons l'adresse virtuelle 0xACA1
Ici Un dans UNCA1 indique le numéro de page ( 10 ) et l'image correspondante n'est de 5 ( 0101) la physique de l'adresse → 0x5CA1.
OriginalL'auteur Akash Mahapatra
Pour traduire un virtuel adresse à un physique adresse, nous avons besoin de savoir 3 choses:
[1]
Dans cet exemple: 16 bits système, taille de page de 4KO et taille de la mémoire physique est 64 KO.
Tout d'abord, nous devons déterminer le nombre de bits nécessaires pour agir en tant que compensé à l'intérieur de la page.
log2(Page-Size)
=log2(4096)
= 12 bits pour décalageDe la 16 bits pour les adresses virtuelles, 12 sont pour compenser, cela signifie que chaque processus a
2^4 = 16
pages virtuelles. Chaque entrée dans la table des pages, les magasins de l'image correspondante accueillir la page. Par exemple:Maintenant permet de traduire des!
Tout d'abord pour la facilité de travail vous permet de convertir
0xE12C
àbinary
.Permet de concaténer à la 12 de décalage de bits
Un autre exemple:
0x3A9D
[1]
Avait les entrées de table de page contenaient plus d'informations, nous aurions besoin de savoir le nombre de bits nécessaires à la référence de chaque image. Dans notre cas, il estlog2(64KB/4KB) = log2(16) = 4
bits. c'est, si l'entrée de table de page figurant à 6 bits, nous savons que seule4
d'entre eux sont pour le numéro de l'image et le reste sont pour les drapeaux.Par exemple:
OriginalL'auteur Tony Tannous
Pour vous aider à résoudre cette question, nous avons besoin pour obtenir nos coordonnées à droite:
En tant que tel, nous avons maintenant:
Nous y arrivons... soyez patient! 🙂
Adresse mémoire 0xE12C dans le code hexadécimal est également connue pour être la tenue de 16 bits de l'adresse. (Car il est dit dans la question.)
Nous allons boucher l'adresse maintenant...
Nous avons d'abord supprimer " 0x " de l'info.
Nous pouvons convertir E12C à la notation binaire comme @Tony Tannous, mais je vais demander un peu coupé court.
- Je simplement utiliser un ratio. Eh bien, l'adresse est notée dans 4 caractères ci-dessus, et depuis 16/4 = 4, je peux définir la première lettre d'adressage virtuel, tandis que les 3 autres sont compensés adresse.
De l'information, des 'E' dans le format hexadécimal, j'ai besoin de convertir en Décimal = 14. Puis je regarde votre tableau fourni, et j'ai trouvé le cadre de la page '3'. Le cadre de la Page 3 est noté dans le format décimal, qui doivent ensuite être convertis au format Hexadécimal... Duh!... qui est 3!
Donc, l'adresse Physique de la cartographie de la mémoire virtuelle emplacement de 0xE12C peut être trouvé à 0x312C sur la mémoire physique.
Vous revenez à la table, et se référer à la référence de la colonne de bits et de mettre un " 1 " à la ligne 14.
Appliquer le même concept pour ces -
Si vous remarquez, les 3 derniers chiffres sont les mêmes (ce qui détermine le décalage).
Et le 1er à 4 chiffres sont assignés conformément au tableau:
Espère que cette explication vous aide, vous et d'autres comme moi! 🙂
OriginalL'auteur joke