Как PAE (расширение физического адреса) разрешает адресное пространство более 4 ГБ?

Отрывок из статьи Википедии о Расширение физического адреса:

Аппаратная архитектура процессора

x86 дополняется дополнительными адресными строками, используемыми для выбора дополнительной памяти, поэтому размер физического адреса увеличивается с 32 бит до 36 бит. Это, теоретически, увеличивает максимальный размер физической памяти от 4 ГБ до 64 ГБ.

Наряду с изображением, объясняющим механизм:

enter image description here

Но я не вижу, как расширяется адресное пространство от 4 до 64 ГБ. И 4 * 512 * 512 * 4K по-прежнему равен 4 ГБ, не так ли?

Ответ 1

Процессоры

x86, работающие в 32-битном режиме, используют переходы страниц для адресов памяти. Это означает, что между адресом, используемым кодом (как ядром, так и пользовательским режимом), есть слой отображения и фактическая физическая память. Например. в Windows все процессы сопоставляют изображение файла .exe с тем же адресом.

Уровень отображения между виртуальным и физическим адресами обычно может отображать только 4 ГБ памяти. При включенном PAE 32-битные виртуальные адреса отображают 36-битные физические адреса. Тем не менее, один процесс не может получить доступ к более чем 4 ГБ за один раз. Это то, что вы видите на картинке, которую вы вставили, 32-битное адресное пространство одного процесса. Вы также можете видеть, что PTE (запись в таблице страниц), содержащая физический адрес, имеет ширину 64 бит.

Приложение, поддерживающее PAE, может поменять местами различные части памяти на видимое адресное пространство, чтобы использовать более 4 ГБ ОЗУ, но оно может видеть только 4 ГБ в любой момент времени.

Ответ 2

Это виртуальное адресное пространство, которое еще 4 ГБ. Физическое адресное пространство больше, поскольку записи в таблице страниц содержат более длинные физические адреса страниц.

Смотрите, на картинке написано "64-битная запись PD" и "64-битная запись PT". Эти дополнительные 32 бита записей составляют более длинные физические адреса страниц.

С помощью этой конкретной схемы ваше приложение может одновременно обрабатывать до 4 ГБ памяти (за исключением части ядра, которая обычно недоступна из-за защиты), но если вы рассматриваете несколько приложений, они могут объединить более 4 ГБ памяти.

Ответ 3

Это не так. Страница адреса никогда не изменяется. Случается, что через вызовы API вы можете использовать области памяти SWAP OUT для других областей памяти. Таким образом, у вас все еще есть полное адресное пространство 4gb (2-3 gb для использования), но вы можете иметь еще 2000 блоков 512mb, которые вы можете поменять на одну часть адресного пространства.