Преимущества PAE для многопоточных программ в 32-битной системе Windows
Если у меня система с более чем 4 ГБ ОЗУ и включенным PAE (на 64-разрядном процессоре), сможет ли многопоточное 32-разрядное приложение использовать всего 4 ГБ или 4 ГБ на поток?
Я спрашиваю, потому что у меня запущено программное обеспечение DAW (цифровая звуковая рабочая станция), которое совместимо только с 32-разрядной версией Windows XP (не может использовать 7 или XP x64 из-за плохих драйверов), а мое программное обеспечение DAW (Sonar X1 Producer) является многопоточным приложение. Я планирую обновить с 4 ГБ до 12 ГБ в ближайшее время, и я хотел бы иметь возможность использовать все это (я могу использовать все это при моей установке Win7 x64). Поскольку я буду запускать только одно приложение, в большинстве случаев полезно (для установки XP), если каждый поток может использовать 4 ГБ, в отличие от приложения, использующего 4 ГБ.
3 ответа
Процесс сможет использовать каждый байт физической памяти. Нет предела тому, сколько физической оперативной памяти может использовать процесс, при условии, что операционная система может получить доступ к этой физической оперативной памяти.
Однако общее адресное пространство всех потоков в процессе будет принципиально ограничено менее чем 4 ГБ (и на практике 2 ГБ или 3 ГБ), поскольку это максимальное поддерживаемое адресное пространство для 32-разрядного процесса. 32-разрядные процессы используют 32-разрядные указатели, а 2^32=4 ГБ. Все потоки разделяют все свое адресное пространство, иначе вы не сможете передать указатель из одного потока в другой.
Это ограничение применяется независимо от PAE и от того, сколько у вас физической памяти. Обычно это 32 ГБ адресного пространства для 32-битных процессов. Вы можете настроить его до 3 ГБ с /3GB
переключатель.
Опять же, это не имеет ничего общего с использованием физической памяти - каждый процесс всегда может использовать каждый байт физической памяти. Это строго ограничение адресного пространства. PAE позволяет операционной системе использовать больше физической памяти. Ограничение адресного пространства влияет на то, как процессы используют виртуальную память.
MSDN обсуждает расширение физических адресов и другие большие адресации памяти. По сути, любое 32-разрядное приложение может отображать только ~ 2 ГБ памяти (это зависит от машины). Несмотря на то, что ОС может получить гораздо больший доступ, каждое отдельное приложение по-прежнему ограничено адресным пространством 2 ГБ. Примечание. Ограничение в 2 ГБ относится к 32-битному процессу, а не к потоку.
Windows XP Professional поддерживает режим 4GT (настройка 4 ГБ), который позволяет приложениям адресовать до 3 ГБ адресного пространства. Это можно включить с помощью параметра /3GB в файле boot.ini.
По умолчанию 32-битные приложения. может получить доступ к 2 Гбайт адресного пространства, независимо от объема физической памяти или от того, какие "флаги" (например, /3G /PAE) установлены.
Программы. с установленным флагом LARGEADDRESSAWARE в заголовке.exe можно получить доступ к общему (сумме всех потоков) 3Gb адресного пространства в 32-битной системе, 4Gb в 64-битной системе.