Иерархический пейджинг с 2 уровнями - PullRequest
0 голосов
/ 28 апреля 2020

Рассмотрим систему подкачки с таблицей страниц, хранящейся в памяти. Используемое логическое адресное пространство составляет 32 бита, а размер страницы составляет 8 КБ. Это приведет к очень большим таблицам страниц, и поэтому система использует иерархический пейджинг с двумя уровнями. Число записей во внешней таблице страниц равно 256.

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

Я нашел некоторую информацию о поиске смещения страницы, Page offset = log2(page size in bytes), поэтому для этого случая это будет 13, но я не нашел много информации о том, как найти количество битов для внешняя страница и внутренняя страница. Кто-нибудь может пролить свет на эту проблему для меня? Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Возможно, я не совсем прав, но поскольку перевод VPN в PPN - одна из моих любимых частей в ОС, я решил поделиться своим пониманием. Возможно, эта картина поможет понять, как виртуальный адрес переводится в физический адрес. enter image description here В этом примере каталог страниц содержит 1024 записи, поэтому вам потребуется 10 бит, чтобы определить, какая запись вам нужна. Эта запись содержит адрес внутренней таблицы. Затем, поскольку внутренняя таблица страниц также содержит 1024 записи, после того, как вы знаете ее адрес, аналогично вам все равно нужно найти индекс ее записи, который содержит адрес физической страницы. Поэтому следующие 10 бит используются для расчета этого индекса. Наконец, когда запись таблицы страниц дает вам физический адрес страницы, смещение дает точный физический адрес. Если это не очень понятно, я могу go узнать больше.

В вашем случае, поскольку у вас есть 8 КБ страниц, как вы сказали, последние 13 бит будут использованы для вычисления смещения , Если самая внешняя таблица страниц содержит 256 записей, то вам потребуется 8 бит (log2 (256)), чтобы определить индекс ее записи. Тогда это зависит от количества записей во внутренней таблице. Или, если размер записи определен, число записей может быть вычислено из этого. Если мы предположим, что оставшиеся 11 бит полностью используются для внутренней таблицы, то она должна будет содержать 2048 записей, так как, исходя из моего понимания, один экземпляр таблицы страниц умещается и заполняет одну физическую страницу.

0 голосов
/ 29 апреля 2020

Младшие биты логического адреса будут использоваться для «смещения на 8192-байтовой странице». Для этого вам понадобится 13 бит (потому что 1 << 13 = 8192 или потому что log2(8192) = 13).

Старшие биты логического адреса будут использоваться для «индексации таблицы внешних страниц на 256 записей». Для этого вам понадобится 8 бит (потому что 1 << 8 = 256 или потому что log2(2562) = 8).

Если логический адрес равен 32 битам, а младшие 13 бит и старшие 8 бит используются для других целей; сколько битов осталось для индекса во внутренней таблице страниц?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...