Сколько памяти может получить 32-разрядный процесс в 64-разрядной операционной системе?
в Windows, при нормальных обстоятельствах 32-битный процесс может получить доступ только к 2 ГБ оперативной памяти(или 3 ГБ со специальным переключателем в загрузке.ini-файл.) При запуске 32-разрядного процесса в 64-разрядной операционной системе, сколько памяти доступно? Существуют ли какие-либо специальные переключатели или настройки, которые могут изменить это?
7 ответов:
2 ГБ по умолчанию. Если приложение имеет большое адресное пространство (связанное с /LARGEADDRESSAWARE), оно получает 4 ГБ (а не 3 ГБ, см. http://msdn.microsoft.com/en-us/library/aa366778.aspx)
Они по-прежнему ограничены 2 ГБ, так как многие приложения зависят от верхнего бита указателей, чтобы быть нулевым.
4 ГБ минус то, что используется системой, если вы связываетесь с /LARGEADDRESSAWARE.
конечно, вы должны быть еще более осторожны с арифметикой указателей, если вы установите этот флаг.
кажется, никто не касается того факта, что если у вас есть много разных 32-разрядных приложений, подсистема wow64 может отображать их в любом месте памяти выше 4G, поэтому на 64-разрядной windows с достаточной памятью вы можете запускать гораздо больше 32-разрядных приложений, чем на родной 32-разрядной системе.
32-разрядный процесс по-прежнему ограничен теми же ограничениями в 64-разрядной ОС. Проблема в том, что указатели памяти имеют ширину только 32 бита, поэтому программа не может назначить/разрешить любой адрес памяти больше 32 бит.
один 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 GB, /3GB или /userva, относится к 32-разрядным операционным системам и не применяется к 64-разрядным Windows.
посмотреть https://msdn.microsoft.com/en-us/library/aa366778(В=и 85).аспн для более подробности.
Что касается 32-разрядных операционных систем, то вопреки распространенному мнению, для 32-разрядных операционных систем не существует физического предела в 4 ГБ. Например, 32-разрядные серверные операционные системы, такие как Microsoft Windows Server 2008 32-разрядные могут получить доступ до 64 ГБ (Windows Server 2008 Enterprise and Datacenter editions) - с помощью расширения физического адреса (PAE), которое было впервые введено Intel в Pentium Pro, а затем AMD в процессоре Athlon-он определяет иерархия таблиц страниц трех уровней, с записями таблиц 64 бит каждый вместо 32, что позволяет этим процессорам напрямую обращаться к физическому адресному пространству размером более 4 гигабайт-так что теоретически 32-разрядная ОС может получить доступ к 2^64 байтам теоретически или 17,179,869,184 гигабайтам, но сегмент ограничен
4GB. Однако из-за маркетинговых причин Microsoft ограничила максимальную доступную память в несерверных операционных системах всего 4 ГБ или даже 3 ГБ эффективно. Таким образом, один процесс может доступ к более чем 4 ГБ на 32-разрядной ОС-и Microsoft SQL server является примером.
У вас есть такое же основное ограничение при запуске 32-битного процесса под Win64. Ваше приложение работает в подсистеме 32 but, которая делает все возможное, чтобы выглядеть как Win32, и это будет включать ограничения памяти для вашего процесса (Нижний 2GB для вас, верхний 2GB для ОС)
предел не 2g или 3gb его 4gb для 32bit.
причина, по которой люди думают, что его 3gb-это то, что ОС показывает 3GB бесплатно, когда у них действительно есть 4GB системной оперативной памяти.
его общая оперативная память 4 ГБ. Поэтому, если у вас есть видеокарта 1 gb, которая считается частью общей оперативной памяти, просматриваемой 32-битной ОС.
4Gig не 3 Не 2 понял?
Comments