13

Если моя операционная система 64-разрядная, могут ли мои 32-разрядные приложения использовать 64-разрядную память (> 3,5 ГБ)?

4 ответа4

6

Если приложение поддерживает AWE, они могут использовать адресное пространство за пределами 4 Гб, хотя и менее эффективно, чем 64-разрядное приложение. Даже 32-разрядные процессы в 32-разрядных вариантах Windows могут получить доступ к более чем 32-разрядному адресному пространству, если PAE разрешен и процесс может его использовать.

Отдельный 32-разрядный процесс (который не поддерживает AWE) обычно ограничен 3Gb (первые ГБ его виртуального адресного пространства зарезервированы для действий, связанных с ядром), но если вы запускаете несколько процессов, они смогут использовать больше в total (каждый может использовать до 3Gb, если позволяет общий объем памяти), поскольку их виртуальные адресные пространства не являются общими.

Ограничение на процесс является более полезным в Unix-подобной среде, где сервисы, как правило, основаны на процессах, а не на потоках (несколько потоков в одном процессе совместно используют ресурсы процессов и, следовательно, совместно используют единое виртуальное адресное пространство 3Gb), как это более распространено. в Windows (запуск нового процесса в Windows довольно дорогой, поэтому потоки предпочтительнее, в большинстве сред Unix запуск нового процесса не намного требует больше ресурсов, чем запуск нового потока). Например, он не очень полезен для компьютера, на котором запущен только SQL Server, поскольку он будет состоять только из одного процесса, поэтому достигнет предела в 3 Гб (некоторые выпуски могут быть настроены для поддержки AWE, но не все, и функция будет удалена в следующем основном выпуске).

Помимо того, что 32-разрядные процессы могут использовать в общей сложности более 3 Гб, операционная система сможет использовать любую неиспользуемую память для кэширования диска, поэтому она не может быть потрачена впустую, если процессы не открывают файлы таким образом. как сказать ОС не мешать делать это.

5

Если приложение использует AWE, то да (хотя это не ограничивается 64-битными ОС). Без этого процесс все еще ограничен адресным пространством 4 ГБ.

3

Сорта, в зависимости от того, что вы имеете в виду.

Предполагая Windows ...

Если ОС 64-разрядная, 32-разрядный процесс по умолчанию получает 2 ГБ виртуального адресного пространства с адресом пользователя. Если PE-заголовок файла .exe помечен флагом IMAGE_FILE_LARGE_ADDRESS_AWARE, то процесс получит 4 ГБ виртуального адресного пространства, адресуемого пользователем. В любом случае виртуальное адресное пространство ядра совпадает с 64-битными процессами, поскольку оно совместно используется всеми процессами. Также следует отметить, что 64-разрядные процессы, которые не устанавливают флаг IMAGE_FILE_LARGE_ADDRESS_AWARE, также имеют доступ только к 2 ГБ виртуального адресного пространства пользователя.

То, что вы слышите о специальных загрузочных флагах, переключателях 3 ГБ, /3 ГБ или /userva, относится к 32-разрядным операционным системам и не применяется в 64-разрядных системах Windows.

Все это подробно описано на странице « Ограничения памяти Microsoft для выпусков Windows» .

Ответ Дэвида Спиллета также касается другого вопроса: несколько процессов, все ограниченные 2 ГБ пользовательского пространства, могут по-прежнему использовать значительные объемы ОЗУ, если они доступны, как и файловый кэш.

0

32-битный процесс в 32-битной ОС имеет адресное пространство 4 ГБ, 2 ГБ которого зарезервировано ОС, 2 ГБ доступно для процесса.
Существует параметр, который можно указать для ОС (/3 ГБ), который изменяет объем, зарезервированный для ОС, только на 1 ГБ и позволяет процессу иметь 3 ГБ, НО, только если процесс объявляет себя как большой адрес, осведомленный в флагах исполняемого файла.

В 64-разрядной ОС 32-разрядный процесс получит 4 ГБ, если он поддерживает большой адрес, в противном случае - 2 ГБ.

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

PAE позволяет 32-разрядной ОС использовать более 4 ГБ ОЗУ, однако она имеет проблемы с совместимостью и была отключена в XP одним из пакетов обновления, поэтому она доступна только в версиях серверных ОС.

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