Я пытаюсь понять, как многоуровневая таблица страниц сохраняет память. По моему мнению, многоуровневая таблица страниц в общей сложности потребляет больше памяти, чем одноуровневая таблица страниц.
Пример. Рассмотрим систему памяти с размером страницы 64 КБ и 32-разрядным процессором. Каждая запись в таблице страниц составляет 4 байта.
Одностраничная таблица страниц: 16 (2 ^ 16 = 64 КБ) бит должны представлять смещение страницы. Таким образом, остальные 16 бит используются для индексации в таблицу страниц. Итак,
* Размер таблицы страниц = 2 ^ 16 (# страниц) * 4 байта (размер каждой записи в таблице) = 2 ^ 18 байтов *
Таблица многоуровневых страниц. В случае двухуровневой таблицы страниц можно использовать первые 10 самых значащих битов для индексации в таблицу страниц первого уровня. Следующие 10 бит для индексации в таблицу страниц второго уровня, которая имеет номер страницы для сопоставления числа кадров. Rest 12-бит представляет смещение страницы.
Размер таблицы страниц второго уровня = 2 ^ 10 (# записей) * 4 байта (размер каждой записи) = 4 КБ
Общий размер всех таблиц страниц второго уровня = 2 ^ 10 (# таблиц страниц второго уровня) * 4 КБ (размер каждой таблицы страниц второго уровня) = 4 МБ
Размер таблицы страниц первого уровня = 2 ^ 10 (# записей) * (10/8) Байт (размер каждой записи) = 1,25 КБ
Общая память, необходимая для хранения таблиц страниц первого и второго уровня = 4 МБ + 1,25 КБ
Поэтому нам нужно больше памяти для хранения многоуровневых таблиц страниц.
Если это так, как многоуровневые таблицы страниц сохраняют пространство памяти?