Иерархическая подкачка с 2 уровнями

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

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

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


person Hunter Sargent    schedule 28.04.2020    source источник


Ответы (2)


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

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

person Ana Khorguani    schedule 28.04.2020
comment
В этих двух небольших абзацах вы объяснили это лучше, чем мой профессор за две недели. Большое спасибо, теперь это имеет гораздо больше смысла. - person Hunter Sargent; 29.04.2020
comment
@HunterSargent Рад, что помогло :) - person Ana Khorguani; 29.04.2020
comment
@HunterSargent Это довольно поздний дополнительный комментарий, но я сделал некоторые вычисления. Поскольку в адресном пространстве используется 32 бита, это означает, что всего будет 524 288 физических страниц: 2 ^ 32/2 ^ 13, где 2 ^ 13 происходит от размера страницы 8 КБ. Таким образом, чтобы сохранить перевод 524 288 страниц, нам нужно в общей сложности такое же количество записей в таблицах страниц. Номер 256 записей каталога страниц сообщает, сколько у нас таблиц страниц. Тогда 524 288/256 дает 2048, что должно быть количеством записей в одном экземпляре таблицы страниц, чтобы в итоге получить 524 288 в сумме. Так что нам действительно нужно 2048 таблиц страниц входа и, следовательно, оставшиеся 11 бит. - person Ana Khorguani; 05.05.2020

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

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

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

person Brendan    schedule 28.04.2020
comment
Таким образом, для внутренней таблицы страниц останется 11 бит. Спасибо за разъяснения. Все остальное, что я нашел в Интернете, было либо слишком расплывчатым, либо слишком глубоким, чтобы я мог понять. - person Hunter Sargent; 29.04.2020