2011-10-12 5 views
2

Ce serait mieux si je l'expliquais par analogie. Ici, il va ...Où est stocké le nom/l'étiquette d'une adresse mémoire?

1.There est une maison à 52, Park Avenue - (L'adresse de mémoire)

2.i y résider - (Data)

3. Si vous demandez-moi où je vis, je dirais '52, Park Avenue '(Je me réfère à l'emplacement de la mémoire)

Mais une maison a son' numéro et nom de la rue 'dans sa pelouse avant comme un' Panneau/Conseil ' même si je déménage ou y réside ... de toute façon! Maintenant, où est ce 'Sign/Board' stocké pour un emplacement de mémoire?

Simplement dit - Comment savons-nous qu'une adresse mémoire particulière est 'x0y34vf' par exemple?

+1

Je ne pense pas que vous le fassiez. Si je vous donne une donnée arbitraire dans la mémoire de l'ordinateur sans y faire référence par son adresse, vous ne savez pas où elle se trouve à moins que vous ne la recherchiez. –

+2

Chaque emplacement de mémoire a un nom/une étiquette? Une autre façon de le mettre est comme dans un lecteur magnétique (pour exmp), comment la tête r/w sait où chercher si l'adresse mémoire est spécifiée comme un 'x034'? – Ganz7

+0

Bien dit comme ça. Si vous aviez une grande rue longue, chaque maison était numérotée séquentiellement à partir de 1, et il y avait une maison tous les 100 mètres. Vous pouvez très rapidement comprendre jusqu'où vous devez conduire pour trouver la maison avec l'adresse "25". –

Répondre

0

La mémoire est mappée dans une table qui contient deux ensembles, l'adresse virtuelle comme l'un hexadécimal et le secteur réel et la page qu'il devrait aller si cette adresse est demandée.

Maintenant, une question que vous pourriez vous poser est, pourquoi est-ce que chaque fois que j'accède à la même adresse hexadécimale, j'obtiens des valeurs différentes bien qu'elles soient garbage. La réponse est que lorsque vous compilez et exécutez votre programme, le programme est chargé dans RAM (Random Access Memory) et remplacé lorsque vous l'avez terminé. Donc, la première fois que votre programme pourrait obtenir un espace à dire littéralement au bloc 90, car le bélier était libre. Mais à la deuxième exécution, le programme pourrait être chargé à un autre bloc disons 720. Cela répond à la moitié seulement. De même, les tables de mappage de pages sont mises à jour pour l'utilisation de l'espace et de l'espace libre et, par conséquent, bien que l'adresse reste la même dans le code source, vous obtenez différentes valeurs pour cette adresse.

Questions connexes