2013-03-26 8 views
11

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

Мое основное недоразумение: Дайте мне пример смещения, используемого в инструкции для доступа к определенному виртуальному addr?

Мое второе замешательство: Обычное утверждение состоит в том, что если размер логического адреса равен 2 м, а размер страницы равен 2^n, то старшие биты m-n логического адреса обозначают номер страницы.

Заранее спасибо

ответ

22

Я думаю, что ваши первичные и вторичные неурядицы обусловлены общей путанице на тему :)

Позвольте мне говорить вокруг этого немного и, надеюсь, я могу иметь некоторую помощь. Во-первых, аналогия - представьте, что вы пытаетесь найти дом в городе. Представьте себе, что каждый дом получил уникальный номер - вы можете себе представить, что количество домов скоро станет очень большим и запутанным. Теперь представьте, что вы вводите понятие улиц - номера домов теперь становятся немного более управляемыми, поскольку вы сгруппировали их в приятные куски. Итак: Streets = номер страницы, номер дома = адрес смещения.

Весь смысл иметь страницы виртуальной памяти - позволить компьютеру вырезать память на управляемые куски и не тратить впустую слишком много. Резание его на куски (страницы) позволяет гранулировать контроль доступа, пейджинга и других приятных вещей. Чем меньше ваших страниц, тем меньше памяти вы собираетесь тратить (если для процесса A требуется 32 тыс. Памяти, а размер страницы - 64 тыс., То в конечном итоге вы получите некоторые, которые не используются), но чем выше накладные расходы на систему.

Что касается того, почему размеры страниц равны 2, это вниз, не теряя пространства внутри адреса. Поскольку компьютеры основаны на двоичном (на данный момент), все имеет тенденцию сводиться к степеням 2. Представьте себе, если у вас есть вещи, основанные на факторах 10. 10 в двоичном состоянии - 1010 - вам нужно использовать 4 бита, чтобы удержать его , так почему бы не пойти на полный диапазон значений, которые вы можете получить из 4 бит: 0000 - 1111 (от 0 до 15 = 16 значений).

Извините, я немного растерялся - надеюсь, это подтолкнет вас в правильном направлении!

+0

Спасибо GHC, но я хочу посмотреть, как инструкция сборки смотрит на смещение. так же ld r2,0x0005. Учитывая, что каждый адрес имеет размер слова, и каждый размер страницы составляет 4 байта. Итак, смещение в этом случае будет 1 байт? , – user1493786

+2

Также я провел небольшое исследование до ответа ура, причина, по которой мы используем силу 2, заключается в том, что когда мы делим виртуальный адрес на размер страницы, u получит pagennumber и offset, так как только верхние m бит адрес будет номером страницы, а последующие n бит будут смещением.Хотя, если бы он не был равен двум, деление виртуального адреса на поиск номера страницы и смещение требует% и/функции, что добавляет накладные расходы на систему. – user1493786

+0

Виртуальное преобразование физических адресов через таблицы страниц имеет еще одно преимущество: оно уменьшает потери физической памяти из-за фрагментации виртуального адресного пространства. –

-1

У меня такое же замешательство, но если я понял это правильно, это выглядит следующим образом: сила 2-го случая немного больше, чем общее понимание темы. Это больше похоже на соглашение, поскольку мы имеем дело с двоичными значениями и нуждаемся в соответствующем разделении между битами, для которых мощность 2 подходит соответственно.

например, если PGE имеет 64k ​​слова и есть 4 слов в кадре, то 2^х = 64 -> х = 6

Это означает, каждый кадр может иметь физический адрес, составляющий 6 двоичных значений, т.е. 0 или 1, в котором 4 будет представлять номер кадра. И последнее обозначение точного местоположения слова среди 4.

Обратите внимание, что здесь каждый кадр не может иметь 5 или любое другое значение или так называемое соглашение терпит неудачу.

+0

Предполагается, что вы правильно напишите английский. –

Смежные вопросы