Может ли 32-разрядное ядро ​​Win7 по-прежнему использовать 2 ГБ с запущенной программой Large Address Aware?

3242
White Phoenix

В настоящее время я использую 32-разрядную версию Windows 7 Professional с 6 ГБ оперативной памяти.

Я использую патч PAE, чтобы разрешить использование более 3,5 ГБ ОЗУ в 32-битной Windows. Подобное обсуждение состоялось здесь: как я могу включить PAE в Windows 7 (32-разрядная версия) для поддержки более 3,5 ГБ ОЗУ?

Ссылка на патч для Win7 SP1 находится здесь: https://wj32.wordpress.com/2011/02/23/pae-patch-updated-for-windows-7-sp1/

В любом случае, короткая история, у меня установлен патч, но если кто-то из вас играл в Skyrim, возможно, об этом известно, то в последней версии Skyrim (1.3.10) по умолчанию включен флаг Large Address Aware, чтобы он мог использовать до 3 ГБ памяти в 32-битной Windows и 4 ГБ памяти в 64-битной Windows. Конечно, чтобы воспользоваться этим преимуществом, вы также должны установить переменную среды пользователя в записи BCD (userva = 3072), чтобы приложение могло использовать все 3 ГБ в 32-битной Windows.

Вот вопрос: насколько я понимаю от моего друга, 32-разрядное ядро ​​Windows может адресовать только до 2 ГБ памяти для себя. При включенном патче PAE и использовании приложения с поддержкой LAA, такого как Skyrim, у 32-битного ядра Windows возникнут какие-либо проблемы с правильным использованием дополнительной доступной памяти (например, будет ли он по-прежнему способен адресовать только 1 ГБ из-за исходный предел 4 ГБ) или Windows сможет правильно распределить достаточно памяти для себя, чтобы ядро ​​могло использовать до 2 ГБ, необходимых? Помните, у меня есть 6 ГБ в моей первоначальной конфигурации.

Насколько я могу судить, даже если приложения не предназначены для работы с PAE, одно приложение может использовать до 2 ГБ, прежде чем оно достигнет своего «предела», поэтому теоретически я могу иметь до 3 приложений, использующих до 2 ГБ. каждый (притворяясь, что Windows не занимает какую-то память, а только теоретический сценарий), и я все равно буду в порядке, поскольку Windows обрабатывает, где в пространстве памяти находятся эти приложения.

Пожалуйста, не стесняйтесь поправлять меня, если я ошибаюсь - я не программист, но мне любопытно, какой тип потолков или стен я встретлю, используя эту конфигурацию.

2

2 ответа на вопрос

4
David Schwartz

Пределы физической памяти и ограничения виртуальной памяти совершенно не связаны. Один не имеет ничего общего с другим. PAE снимает ограничение в 4 ГБ для физической памяти. Он не имеет никакого отношения к проблемам 3GB / LAA, связанным с виртуальной памятью.

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

Если это влияет на вас, первым симптомом будет сбой в сети при загадочных ошибках. Смотрите, например, эту ветку Microsoft .

Вы никогда не упоминали, что используете / 3GB. Без этого процессы LAA по-прежнему ограничены 2 ГБ.

Насколько я могу судить, даже если приложения не предназначены для работы с PAE, одно приложение может использовать до 2 ГБ, прежде чем оно достигнет своего «предела», поэтому теоретически я могу иметь до 3 приложений, использующих до 2 ГБ. каждый (притворяясь, что Windows не занимает какую-то память, а только теоретический сценарий), и я все равно буду в порядке, поскольку Windows обрабатывает, где в пространстве памяти находятся эти приложения.

Нет! Ограничение 2 ГБ на виртуальную память. У вас есть 6 ГБ физической памяти. У вас может быть 50 процессов, каждый из которых использует 2 ГБ, и вы не достигнете какого-либо ограничения, за исключением ограничения для каждого из этих 50 процессов.

Спасибо за объяснение. Вот почему я спрашивал, так как меня немного смутили эти две концепции и были ли они вообще связаны друг с другом. Я не использую ключ / 3GB. Как я уже сказал, единственное изменение, которое я внес в свою запись BCD (кроме изменений, необходимых для запуска исправленных файлов winload.exe и ntkrnl.exe), состояло в том, чтобы навсегда установить для параметра userva значение 3072 (3 ГБ). White Phoenix 12 лет назад 0
Затем вы увеличили объем физической памяти, которую может использовать ОС, но не внесли изменений в виртуальную память. Процессы по-прежнему ограничены 2 ГБ виртуальной машины за штуку. David Schwartz 12 лет назад 1
Опция userva = 3072 является эквивалентом BCD / 3GB; это влияет на пространство ВМ процесса. Приложение LAA в этой системе сможет использовать до 3 ГБ виртуального адресного пространства, а ядро ​​vas всего 1 ГБ. Стоит отметить, что при такой загрузке ОС ядро ​​vas занимает всего 1 ГБ, даже если вы никогда не запускали приложение LAA. Однако в 32-разрядной версии Windows 7 добавлено «динамическое распределение пространства памяти ядра», поэтому адресное пространство ядра используется гораздо более эффективно, чем раньше. И ОС, конечно, все еще сможет управлять всей оперативной памятью. Jamie Hanrahan 10 лет назад 0
2
Mehrdad

32-разрядное ядро ​​Windows может адресовать только до 2 ГБ памяти для себя.

Да, ядро ​​не займет более 2 ГБ из 4 ГБ виртуального адресного пространства программы (или более 1 ГБ, если у вас есть /3GBфлаг и программа поддерживает большие адреса). Таким образом, каждому приложению гарантировано меньше 2 ГБ виртуальной памяти (или 3 ГБ в последнем случае).

С помощью PAE ядро ​​может использовать до 64 ГБ физической памяти. Но каждая программа по- прежнему имеет виртуальное адресное пространство 4 ГБ. Вы не можете обойти это каким-либо иным способом, кроме как путем обновления до 64-битной системы.

Насколько я могу судить, даже если приложения не предназначены для работы с PAE, одно приложение может использовать до 2 ГБ, прежде чем оно достигнет своего «предела», поэтому теоретически я могу иметь до 3 приложений, использующих до 2 ГБ. каждый (притворяясь, что Windows не занимает какую-то память, а только теоретический сценарий), и я все равно буду в порядке, поскольку Windows обрабатывает, где в пространстве памяти находятся эти приложения.

Ага.

Если приложению требуется более 2 ГБ физической памяти, оно должно использовать AWE, но я серьезно сомневаюсь, что игра делает это (программировать это нелегко).

Чтобы быть точным, он должен использовать AWE, если ему нужно получить доступ к большему количеству физической памяти, чем он может с его 2 ГБ адресного пространства. (Например, если у него есть 1 ГБ файл, отображенный в памяти, у него есть только 1 ГБ адресного пространства, оставленного для отображения физической памяти.) David Schwartz 12 лет назад 1

Похожие вопросы