Один 32-разрядный процесс в 64-разрядной ОС ограничен 2 ГБ. Но если он скомпилирован в EXE-файл с установленным битом IMAGE_FILE_LARGE_ADDRESS_AWARE, он имеет ограничение 4 ГБ, а не 2 ГБ - см. https://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx
В любом случае виртуальное адресное пространство ядра совместно используется всеми процессами. Вот почему, даже если у вас очень большое количество 32-битных процессов, они могут исчерпать память, несмотря на то, что у вас есть много памяти для вашей 64-битной операционной системы, скажем, 16 ГБ - 32-битная всего процессы могут быстро исчерпать доступное им виртуальное адресное пространство ядра (максимум 2 ГБ).
То, что вы слышите о специальных флагах загрузки, переключателях 3 ГБ, / 3 ГБ или / userva, относится к 32-разрядным операционным системам и не применимо в 64-разрядных Windows.
Подробнее см. https://msdn.microsoft.com/en-us/library/aa366778(v=vs.85).aspx.
Что касается 32-разрядных операционных систем, вопреки распространенному мнению, для 32-разрядных операционных систем не существует физического ограничения в 4 ГБ. Например, 32-разрядные серверные операционные системы, такие как 32-разрядная версия Microsoft Windows Server 2008, могут получить доступ к 64 ГБ (выпуски Windows Server 2008 Enterprise и Datacenter) - с помощью расширения физических адресов (PAE), которое Впервые был представлен Intel в Pentium Pro, а затем AMD в процессоре Athlon - он определяет иерархию таблиц страниц из трех уровней с записями в таблице по 64 бита вместо 32, что позволяет этим ЦП напрямую обращаться к физическому адресному пространству. больше чем 4 гигабайта - теоретически, 32-битная ОС теоретически может получить доступ к 2 ^ 64 байта, или 17 179 869 184 гигабайта, но сегмент ограничен 4GB
. Однако по маркетинговым причинам Microsoft ограничил максимально доступную память в несерверных операционных системах всего 4 ГБ или даже 3 ГБ. Таким образом, один процесс может получить доступ к более чем 4 ГБ в 32-разрядной ОС, например, сервер Microsoft SQL.