Где хранится имя / метка адреса памяти? - PullRequest
2 голосов
/ 12 октября 2011

Было бы лучше, если бы я объяснил это аналогией. Вот и все ...

1.Это дом на Парк-авеню, 52 - (адрес памяти)

2.Я нахожусь в нем - (Данные)

3. Если бы вы спросили меня, где я живу, я бы сказал, '52, Park Avenue '(я имею в виду место памяти)

Но дом имеет свое «Номер и название улицы» на своей лужайке перед домом как «Вывеска / Доска», даже если я выезжаю или проживаю в нем ... в любом случае! Где хранится этот знак / доска для ячейки памяти?

Проще говоря - Откуда мы знаем, что конкретный адрес памяти, например, 'x0y34vf'?

1 Ответ

0 голосов
/ 07 июня 2013

Память отображается в таблицу, которая содержит два набора: виртуальный адрес, такой как шестнадцатеричный, и фактический сектор и страницу, на которые она должна перейти, если запрашивается этот адрес.

Теперь вы можете задать вопрос: почему каждый раз, когда я получаю доступ к одному и тому же шестнадцатеричному адресу, я получаю разные значения, хотя они и являются мусором.

Ответ таков: когда вы компилируете и запускаете программу, программа загружается в ОЗУ (оперативное запоминающее устройство) и выгружается, когда вы завершаете ее работу.Так что в первый раз ваша программа может получить пробел, скажем, буквально в блоке 90, поскольку оперативная память была свободна.Но во время второго запуска программа может быть загружена в другом блоке, скажем, 720. Это отвечает только наполовину.

Аналогично, таблицы отображения страниц обновляются для использования свободного и свободного пространства и, следовательно, хотя адрес остается тем же висходный код, при выполнении вы получите разные значения для этого адреса.

...