2013-11-24 3 views
0

Я пытаюсь ответить на этот вопрос: Почему размер страницы равен смещению адреса памяти?Как компьютер определяет, где писать в виртуальной памяти?

Это потому, что компьютер определяет номер страницы из таблицы страниц, а затем умножает ее на смещение, чтобы определить, где начать писать? Я думаю, что это единственное логическое объяснение, но я не уверен, потому что наставник не мог ответить мне.

Кроме того, если у вас есть 64-битная адресуемая память, а смещение составляет 14 бит, это не 14 бит впустую? Вы можете выделить свои данные для большего объема памяти без смещения, верно?

+1

Ваш наставник _couldn't_ отвечает вам? Получите лучшего репетитора! –

+0

Да, я даже не знаю, почему я заплатил этому парню. – user28464

+1

Вопрос не имеет смысла. Пожалуйста, проверьте большую сумку мелочей Джимбо по адресу http://en.wikipedia.org/wiki/Virtual_memory –

ответ

0

Потому что смещение является единственной частью виртуального адреса, который не переведен (переведен здесь означает, что значение изменяется) в физический адрес. Грубо говоря, виртуальный адрес формируется базовым адресом и смещением. Базовый адрес преобразуется в адрес к началу физической страницы. Эти страницы должны быть рассчитаны таким образом, чтобы любое смещение от исходного виртуального адреса находилось на этой странице. Именно по этой причине размер страницы - 1 равен максимальному смещению.

Например: на системах x86, использующих таблицы с 4 МБ-страницами (атрибут PS на бит 7 дескриптора страницы равен 1), базовый адрес формируется из 10 наиболее значимых бит, которые указывают на одну из возможных 1024 страниц в Справочнике страниц. Каждая запись имеет длину 32 бита (дескриптор страницы). Если дескриптор страницы ссылается на страницу 4 МБ, как указано, тогда есть поле, в котором первый физический адрес этой страницы 4 МБ хранится в физической памяти (обычно называемой страничным фреймом).

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