Подтвердить что ты не робот

Сколько памяти может 32-битный доступ к процессу в 64-битной операционной системе?

В Windows при нормальных обстоятельствах 32-битный процесс может получить доступ только к 2 ГБ ОЗУ (или 3 ГБ с помощью специального переключателя в файле boot.ini). При запуске 32-разрядного процесса в 64-разрядной операционной системе, сколько памяти доступно? Существуют ли какие-либо специальные переключатели или настройки, которые могут изменить это?

4b9b3361

Ответ 1

2 GB по умолчанию. Если приложение имеет большое адресное пространство (связанное с /LARGEADDRESSAWARE ), оно получает 4 ГБ (не 3 ГБ, см. http://msdn.microsoft.com/en-us/library/aa366778.aspx)

Они по-прежнему ограничены 2 ГБ, поскольку многие приложения зависят от того, что верхний бит указателей равен нулю.

Ответ 3

Никто, по-видимому, не затрагивает тот факт, что если у вас много разных 32-битных приложений, подсистема wow64 может отображать их в любом месте в памяти выше 4G, поэтому на 64-битных окнах с достаточной памятью вы можете запустить еще 32 -битных приложений, чем на собственной 32-разрядной системе.

Ответ 4

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

Ответ 5

Один 32-разрядный процесс под 64-разрядной ОС ограничен 2 ГБ. Но если он скомпилирован в EXE файл с установленным битом IMAGE_FILE_LARGE_ADDRESS_AWARE, тогда он имеет ограничение в 4 ГБ, а не 2Gb - см. 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(v=vs.85).aspx.

Как и в случае 32-разрядных операционных систем, вопреки мнению, нет физического предела в 4 ГБ для 32-разрядных операционных систем. Например, 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.

Ответ 6

У вас есть одно и то же основное ограничение при запуске 32-битного процесса под Win64. Ваше приложение работает в 32-х, но подсистеме, которая делает все возможное, чтобы выглядеть как Win32, и это будет включать ограничения памяти для вашего процесса (ниже 2 ГБ для вас, верхняя 2 ГБ для ОС)

Ответ 7

Предел не 2g или 3gb его 4gb для 32bit.

Причина, по которой люди думают, что ее 3gb - это то, что ОС показывает 3gb бесплатно, когда у них действительно есть 4gb системного RAM.

Общая оперативная память 4gb. Так что, если у вас есть видеокарта с 1 ГБ, которая считается частью общей памяти, просматриваемой 32-разрядной ОС.

4Gig not 3 not 2 получил его?