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

#operating-system #paging #virtual-address-space

#операционная система #подкачка страниц #виртуальное адресное пространство

Вопрос:

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

Компьютер имеет 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 бит виртуального адресного пространства. Сколько уровней таблицы страниц требуется?

Комментарии:

1. 4096/8 = 512 записей; Для адреса 512 записей log2(512) = 9 бит. Общее количество битов для кодирования каждого уровня страницы равно 48 — log2 (4096) = 36 бит. Таким образом, общее количество требуемых уровней равно 36/9 = 4.

2. Поскольку 2048 указано в байтах, не следует ли его преобразовать в биты, что сделало бы его 50/9 = 6 округленным в большую сторону?

3. Нет, потому что вам нужно знать, сколько битов требуется для адреса 2048 байт, а не битов.

4. Возможно, я отвечу в 2014 году, но большое СПАСИБО!!

Ответ №2:

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

Комментарии:

1. 2048 рассчитан на 2 тысячи страниц? Какая ОС их использует? Разве вы не хотите использовать здесь страницы 4K?