Я думаю, что ваши первичные и вторичные неурядицы обусловлены общей путанице на тему :)
Позвольте мне говорить вокруг этого немного и, надеюсь, я могу иметь некоторую помощь. Во-первых, аналогия - представьте, что вы пытаетесь найти дом в городе. Представьте себе, что каждый дом получил уникальный номер - вы можете себе представить, что количество домов скоро станет очень большим и запутанным. Теперь представьте, что вы вводите понятие улиц - номера домов теперь становятся немного более управляемыми, поскольку вы сгруппировали их в приятные куски. Итак: Streets = номер страницы, номер дома = адрес смещения.
Весь смысл иметь страницы виртуальной памяти - позволить компьютеру вырезать память на управляемые куски и не тратить впустую слишком много. Резание его на куски (страницы) позволяет гранулировать контроль доступа, пейджинга и других приятных вещей. Чем меньше ваших страниц, тем меньше памяти вы собираетесь тратить (если для процесса A требуется 32 тыс. Памяти, а размер страницы - 64 тыс., То в конечном итоге вы получите некоторые, которые не используются), но чем выше накладные расходы на систему.
Что касается того, почему размеры страниц равны 2, это вниз, не теряя пространства внутри адреса. Поскольку компьютеры основаны на двоичном (на данный момент), все имеет тенденцию сводиться к степеням 2. Представьте себе, если у вас есть вещи, основанные на факторах 10. 10 в двоичном состоянии - 1010 - вам нужно использовать 4 бита, чтобы удержать его , так почему бы не пойти на полный диапазон значений, которые вы можете получить из 4 бит: 0000 - 1111 (от 0 до 15 = 16 значений).
Извините, я немного растерялся - надеюсь, это подтолкнет вас в правильном направлении!
Спасибо GHC, но я хочу посмотреть, как инструкция сборки смотрит на смещение. так же ld r2,0x0005. Учитывая, что каждый адрес имеет размер слова, и каждый размер страницы составляет 4 байта. Итак, смещение в этом случае будет 1 байт? , – user1493786
Также я провел небольшое исследование до ответа ура, причина, по которой мы используем силу 2, заключается в том, что когда мы делим виртуальный адрес на размер страницы, u получит pagennumber и offset, так как только верхние m бит адрес будет номером страницы, а последующие n бит будут смещением.Хотя, если бы он не был равен двум, деление виртуального адреса на поиск номера страницы и смещение требует% и/функции, что добавляет накладные расходы на систему. – user1493786
Виртуальное преобразование физических адресов через таблицы страниц имеет еще одно преимущество: оно уменьшает потери физической памяти из-за фрагментации виртуального адресного пространства. –