Ограничение 2 ГБ в 32-битных операционных системах

8

Означает ли ограничение в 2 ГБ для 32-разрядных операционных систем, что каждый процесс может получить доступ только к 2 ГБ памяти или что все процессы вместе могут использовать только 2 ГБ физической памяти ?

Итак, 2 ГБ, зарезервированные для ядра, ограничивают общий объем, который могут использовать все процессы вместе?

Злой ученый
источник
Обратите внимание, что Fabian имеет в виду только физическую память, а не файл подкачки.
Арда Си
Он также имеет в виду только Windows, а не операционные системы в целом.
Арда Си
Возможно, он спрашивает об этом, но таких отношений нет. Каждый процесс может получить доступ к 2 ГБ виртуальной. Некоторая часть этого будет в ОЗУ («резидент»). В 32-разрядных клиентских версиях Windows общий объем резидентной памяти всех процессов плюс резидентная память ОС может составлять не более 4 ГБ. В распределении физической памяти нет разделения на 2 ГБ.
Джейми Ханрахан
Принятый ответ в этом посте дает полную информацию - stackoverflow.com/questions/490520/…
RBT

Ответы:

4

Существует много неправильных представлений об ограничении памяти в 32-разрядных ОС Windows.

Прежде всего, когда я говорю ОЗУ, это включает в себя все виды ОЗУ. Так что не только обычная, но и ваша видеопамять.

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

Кроме того, вся ОС может адресовать только 4 ГБ для каждого объединенного процесса, в то время как 64-разрядные ОС могут выделять 8 ТБ.

Также интересно то, что этот лимит складывается в выгружаемый пул. Это означает, что 32-разрядная ОС не может использовать более 2 ГБ, что означает 6 ГБ для всех приложений, включая виртуальную память. Конечно, это не имеет ничего общего с оперативной памятью, поскольку остальные 2 ГБ будут храниться в файле подкачки, ограниченном скоростью вашего жесткого диска.

Для получения дополнительной информации см. Ограничения памяти для выпусков Windows .

Примечание: это только для приложений. 32-разрядная ОС Windows может выделять до 4 ГБ, но 2 ГБ из этого выделяются только для системного использования, оставляя только 2 ГБ для приложений. В некоторых случаях (особенно в новых ОС) это делится на 3 ГБ для приложений и 1 ГБ для ядра.

Я обсуждал только Windows, потому что это контекст, в котором этот вопрос имел в виду. Я не знаком с ограничениями других ОС.

Арда Си
источник
2
этот ответ не полный - он не включает в себя понятие «адресное пространство», за исключением того, что включена видеопамять, а тот факт, что адресное пространство в 32-разрядных операционных системах фактически ограничено 4 ГБ без расширений, а не 2 ГБ (вы может даже сказать, что 32-битная копия XP загружается с 3 ГБ оперативной памяти)
lunixbochs
1
Вопрос не в том, что такое адресное пространство. Я мог бы утомить вас всех, обсудив способ адресации памяти и ограничение 32-битных целых чисел, но это не тот вопрос, о котором идет речь, поэтому он кажется излишне сложным. И да, вы можете использовать ключ / 3GB. Этот вопрос не включает это.
Арда Си
1
Ограничение памяти в 4 ГБ распространяется только на физическую память в стандартной 32-битной архитектуре x86. Виртуальная память отличается, и 32-битные ОС могут использовать гораздо больше, чем 4 ГБ памяти (всего не на процесс), если она использует файл подкачки или раздел подкачки. Скорость жесткого диска не влияет на доступный размер файла подкачки или пространство подкачки, если на жестком диске достаточно места, чем на страницу или подкачку. Это влияет только на производительность подкачки / подкачки.
1
О, я забыл упомянуть, видео-плунжер не является фактором, если только он не интегрирован с видео-плёнкой, разделяющей основной плунжер, но даже тогда он просто вычитает из доступного физического плунжера. Это не влияет на доступную виртуальную память. Выделенные видеокарты имеют свои собственные процессоры и память, которые не влияют на доступную память системы.
@ Spooky Не совсем верно. Если вы посмотрите мою ссылку, вы увидите, что выгружаемый пул ограничен виртуальным адресным пространством в режиме ядра, которое составляет 2 ГБ. Это означает около 6 ГБ всего.
Арда Си
0

Если OP относится к ОС Windows, то все 32-разрядные ОС ограничены общим объемом 4 ГБ, за исключением центра обработки данных сервера 2003 или предприятия с концепцией под названием PAE (расширение физического адреса). Это также доступно в современных ядрах Linux. Конечно, 32-разрядные процессоры становятся все более редкими за пределами мобильного пространства.

skub
источник