Многоуровневые таблицы страниц - иерархическая подкачка

Пример вопроса из последнего финала операционной системы, как я могу рассчитать этот вопрос?

Компьютер имеет 64-битное виртуальное адресное пространство и 2048-байтные страницы. Запись в таблице страниц занимает 4 байта. Используется многоуровневая таблица страниц, поскольку каждая таблица должна содержаться внутри страницы. Сколько уровней требуется?

Как бы это вычислить?

Ответы

Ответ 1

Так как таблица страниц должна входить в страницу, размер таблицы страниц составляет 2048 байт, и каждая запись составляет 4 байта, поэтому таблица содержит 2048/4 = 512 записей. Для обращения к 512 записям требуется log2 (512) = 9 бит. Общее количество бит, доступных для кодирования записи для каждого уровня страницы, равно 64-log2 (2048) = 53 бит (количество бит адресного пространства за вычетом битов смещения страницы). Таким образом, общее количество требуемых уровней равно 53/9 = 6 (округленное).

Размер таблицы страниц по умолчанию x86-64 составляет 4096 байт, каждая таблица страниц должна входить в страницу, а запись в таблице страниц - 8 байт. Текущие процессоры реализуют только 48 бит виртуального адресного пространства. Сколько уровней таблицы страниц требуется?

Ответ 2

  • Логический адрес бит = 64,
  • Номер страницы будет = 2 ^ 64/2048 = 2 ^ 64/2 ^ 11 = 2 ^ 53
  • Страницы имеют входной синус таблицы страниц = 4 байт,
  • Число записей в 1 странице будет = 2048/4 = > 512,
  • бит Для представления одной записи = Журнал (512) = 9 бит,
  • и бит для страницы = 53bit
  • Поэтому Количество уровней = 53/9 = > 6 Таблица страниц уровня