Многоуровневая пейджинговая операционная система - PullRequest
1 голос
/ 09 ноября 2011

У меня была эта проблема на экзамене сегодня:

Предположим, у вас есть компьютерная система с 38-битным логическим адресом, размером страницы 16 КБ и 4 байтами на каждую запись таблицы страниц.

  1. Сколько страниц в логическом адресном пространстве?Предположим, что мы используем двухуровневое разбиение на страницы, и каждая таблица страниц может полностью уместиться в кадре.

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

  3. Предположим, у нас есть программа размером 32 МБ, так что вся программа и все необходимые таблицы страниц (с использованием двухуровневой подкачки страниц) находятся в памяти.Сколько памяти (в количестве кадров) используется программой, включая ее таблицы страниц?

Как мне решить эту проблему?До сих пор я думал, что размер страницы = размер кадра, но в этом случае этого не произойдет.


Вот что я думаю:

Поскольку размер страницы составляет 16 КБ,мое смещение будет 17 бит (2^17 = 16K).Теперь, как мне разделить остальные биты, и какой будет размер кадра?Я делю остальные биты пополам?

1 Ответ

3 голосов
/ 09 ноября 2011
  1. 2 38 / 16384 = 16777216 страниц.
  2. С одной стороны, остальные 38-лог 2 16384 = 24 бита адреса могут бытьРазумно разделить поровну между каталогом страниц и таблицами страниц логического адреса, поскольку такая симметрия упростит конструкцию.С другой стороны, каждая таблица страниц должна иметь такой же размер, что и страница, чтобы их можно было выгружать на диск точно так же, как обычные / листовые страницы, содержащие программный код и данные.К счастью, в этом случае использование 12 битов для индексов каталогов страниц и индексов таблиц страниц дает нам обоим, поскольку 2 12 * 4 байта размера записи таблицы страниц = 16384. Кроме того, поскольку адрес страницы всегда имеет 14 наименее значимыхбиты установлены в ноль из-за естественного выравнивания страницы, только 38-14 = 24 бита адреса страницы должны быть сохранены в записи таблицы страниц, и это дает вам 32-24 = 8 бит для остальных контрольных данных (присутствует,супервизор / пользователь, доступный для записи / недоступный для записи, грязный, доступный и т. д. биты).Это то, что мы получаем, предполагая, что физический адрес также не длиннее 38 бит.Система может иметь чуть более 38 бит физического адреса за счет меньшего количества контрольных битов.Во всяком случае, все подходит.Итак, 38 = 12 (индекс каталога страниц) +12 (индекс таблицы страниц) +14 (смещение).
  3. 32 МБ / 16 КБ = 2048 страниц для самой программы.Каждая таблица страниц занимает 2 12 = 4096 страниц, поэтому для этой программы вам потребуется около 2048/4096 = 0 таблиц страниц.Мы округляем это до 1 страницы таблицы.Тогда есть также каталог страниц.2048 + 1 + 1 = 2050 - это количество страниц, необходимое для хранения всей программы с таблицами связанных страниц в памяти.
...