5

Я понял, что 2^32 = 4,294,967,296 и 2 ГБ - для ОС, а 2 ГБ - для процесса, но почему 64-битная ОС дает только 4 ГБ адресного пространства? Разве это не должно быть 2^64 = 18,446,744,073,709,551,615 которое при равномерном распределении между ОС и процессом намного превышает 4 ГБ?

3 ответа3

10

Если вы посмотрите на ограничения памяти для выпусков Windows

Ограничение для виртуального адресного пространства в режиме пользователя x64 составляет не 4GB а не менее 8TB

Некоторое объяснение, которое оправдывает ограничение 8Tb .

По умолчанию 32- битный exe-файл ограничен 2GB на 64-битной ОС, если только он не настроен с IMAGE_FILE_LARGE_ADDRESS_AWARE

5

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

Обратите внимание, что это чисто ограничение виртуальной памяти, которое процесс может отображать в свое адресное пространство за один раз.

-2

Ваши расчеты верны. При работе с 64-битной системой вам не нужно беспокоиться об адресном пространстве (это гораздо больше, чем поддерживает ваша система). Если размер оперативной памяти не соответствует предполагаемому, проблема заключается в другом. Возможно, ваша материнская плата ограничена, или некоторые флешки не поддерживаются / не работают.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .