Как PAE (расширение физического адреса) разрешает адресное пространство размером более 4 ГБ? - PullRequest
12 голосов
/ 04 декабря 2011

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

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

Вместе с изображением, объясняющим механизм:

enter image description here

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

Ответы [ 3 ]

10 голосов
/ 04 декабря 2011

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

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

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

6 голосов
/ 04 декабря 2011

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

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

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

3 голосов
/ 04 декабря 2011

Это не так. Адресная страница никогда не меняется. Что происходит, так это то, что с помощью вызовов API вы можете поменять области памяти с другими областями памяти. Таким образом, у вас все еще есть только полное адресное пространство 4 ГБ (можно использовать 2-3 ГБ), но у вас может быть еще 2000 блоков по 512 МБ, которые вы можете поменять в одной части адресного пространства.

...