Имейте в виду, что этот дизайн взят из Intel 80386, выпущенного в 1985 году, и с тех пор практически не изменился.
Запись таблицы страниц занимает 4 байта. Если вам нужно 2 ^ 20 записей таблицы страниц, это 4 МБ памяти только для вашей таблицы страниц. Сегодня это может показаться разумным, но по стандартам 1985 года это возмутительно. Память в те дни стоила около 1000 долларов за мегабайт , и большинство людей привыкли иметь 640K или меньше.
Кроме того, если вы собираетесь использовать многозадачность, которая была основным достижением 386, вам нужна отдельная таблица страниц для каждой задачи. Умножьте это на $ 4000, умноженное на другое большое число; Unix пользователи уже привыкли бы к возможности запуска десятков процессов одновременно.
Большинству процессов не потребовалось бы где-то около 4 ГБ виртуальной памяти: опять же, вряд ли кто-то имел где-либо подобное много физической памяти или даже дискового пространства. Настоящему борову памяти (возможно, Emacs?) Мог понадобиться один или два мегабайта. При двухуровневой структуре вам нужно только столько записей таблицы страниц, сколько фактически используется страниц памяти, плюс немного больше для каталога страниц. Большинство записей каталога страниц не понадобятся и могут быть помечены как неиспользуемые, без необходимости указывать страницу таблицы страниц. Таким образом, вашей памяти может потребоваться всего несколько килобайт для накладных расходов на подкачку.
Конечно, для достижения дополнительного уровня требуется еще несколько циклов, но это разумный компромисс для экономии памяти на тысячи долларов. Как бы то ни было, процессор кэшировал записи таблицы страниц, поэтому ему не приходилось часто просматривать их в памяти.