Должны ли записи таблицы страниц на каждом уровне двухуровневой системы пейджинга быть одинакового размера?

Допустим, гипотетически у вас есть двухуровневая система пейджинга с 32-битным логическим адресом, а смещение страницы заранее определено как 12-битное. Это оставляет 20 бит для номеров страниц. Все примеры, которые я могу найти в Интернете и в учебниках, показывают номера страниц, а затем разбиты на 2 блока по 10, так что виртуальный адрес выглядит примерно так:

[ p1: 10 бит | p2: 10 бит | смещение: 12 бит]

Должны ли оба номера страниц быть 10-битными? Например, может ли это быть вместо этого:

[ p1: 8 бит | p2: 12 бит | смещение: 12 бит]

А как насчет использования нечетного количества битов для номеров страниц, например:

[ p1: 9 бит | p2: 11 бит | смещение: 12 бит]

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


*Полное раскрытие информации: этот вопрос сам по себе не является задачей с домашним заданием, а возник при попытке решить задачу с домашним заданием. Не пытаюсь заставить кого-то делать мою работу за меня. Просто пытаюсь понять, что возможно, и есть ли какие-либо преимущества/недостатки того или иного способа.


person David Stinemetze    schedule 07.02.2011    source источник


Ответы (1)


Нет причин, по которым они должны быть одного размера, кроме как для упрощения реализации. На самом деле, в некоторых системах (например, x86) отображаемое поле p2 может быть частью поля offset для одних страниц, а не для других, что позволяет использовать разные размеры страниц.

person Jeremiah Willcock    schedule 07.02.2011
comment
Хорошо спасибо. Я полагал, что это, вероятно, так, но не мог найти примеров, показывающих обратное. Просто хотел убедиться, что я не пытался решить проблему с ложной предпосылкой. - person David Stinemetze; 07.02.2011