Преимущества PAE для многопоточных программ в 32-битной системе Windows

1634
gjsmo

Если у меня система с более чем 4 ГБ ОЗУ и включенным PAE (на 64-разрядном процессоре), сможет ли многопоточное 32-разрядное приложение использовать всего 4 ГБ или 4 ГБ на поток?

Я спрашиваю, потому что у меня запущено программное обеспечение DAW (цифровая звуковая рабочая станция), которое совместимо только с 32-битной Windows XP (не могу использовать 7 или XP x64 из-за плохих драйверов), а мое программное обеспечение DAW (Sonar X1 Producer) является многопоточным приложение. Я планирую обновить с 4 ГБ до 12 ГБ в ближайшее время, и я хотел бы иметь возможность использовать все это (я могу использовать все это при моей установке Win7 x64). Поскольку я буду запускать только одно приложение, в большинстве случаев полезно (для установки XP), если каждый поток может использовать 4 ГБ, в отличие от приложения, использующего 4 ГБ.

4

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

2
David Schwartz

Процесс сможет использовать каждый байт физической памяти. Нет предела тому, сколько физической оперативной памяти может использовать процесс, при условии, что операционная система может получить доступ к этой физической оперативной памяти.

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

Это ограничение применяется независимо от PAE и независимо от того, сколько у вас физической памяти. Обычно это 32 ГБ адресного пространства для 32-битных процессов. Вы можете настроить его до 3 ГБ с помощью /3GBпереключателя.

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

Как интересно ... Существуют ли причины, по которым адресация возможна только в 2 или 3 ГБ, даже в виртуальном адресном пространстве 4 ГБ (я думаю, что это правильный термин ...)? Я обязательно включу ограничение в 3 ГБ. gjsmo 12 лет назад 0
Это потому, что 32-разрядные операционные системы были разработаны в то время, когда 4 ГБ было больше, чем кто-либо мог себе представить. Таким образом, они были предназначены для размещения как представления ядра, так и представления пользовательского пространства в одном и том же адресном пространстве для оптимизации кода ядра и, в частности, для оптимизации перемещения информации между пользовательским пространством и пространством ядра. Разделение пользователя / ядра 2 ГБ / 2 ГБ используется по умолчанию. David Schwartz 12 лет назад 1
Я уверен, что это на самом деле больше связано с таблицей страниц, чем с чем-либо еще. Разделение 2/2 является значением по умолчанию, поскольку немногим программам когда-либо требуется более 2 ГБ памяти одновременно. И технически ОС x86 может адресовать ** более 4 ГБ ** оперативной памяти. Это просто требует гораздо большей таблицы страниц. Обратите внимание, что x86-версия Windows Server и Red Hat может использовать более 4 ГБ ОЗУ. surfasb 12 лет назад 0
@surfasb: из-за PAE их ядра могут получить доступ к более чем 4 ГБ физической памяти. Но это не имеет никакого отношения к вопросу о том, сколько адресного пространства может иметь процесс. Разделение 2/2 и ограничение для 32-разрядных процессов относятся к адресному пространству, а не к физической памяти. (Эти две совершенно разные проблемы * очень * часто путаются.) David Schwartz 12 лет назад 1
1
Chris Thompson

MSDN обсуждает расширение физических адресов и другие большие адресации памяти. По сути, любое 32-битное приложение может отображать только ~ 2 ГБ памяти (это зависит от машины). Несмотря на то, что ОС может получить гораздо больший доступ, каждое отдельное приложение по-прежнему ограничено адресным пространством 2 ГБ. Примечание. Ограничение в 2 ГБ относится к 32-битному процессу, а не к потоку.

Windows XP Professional поддерживает режим 4GT (настройка 4 ГБ), который позволяет приложениям адресовать до 3 ГБ адресного пространства. Это можно включить с помощью параметра / 3GB в файле boot.ini.

Технически, 2 ГБ - это предел ** отображенной ** памяти. но вы можете адресовать до 4 Гб. Это также ** относится только к 32-битным процессам **. http://blogs.msdn.com/b/ericlippert/archive/2009/06/08/out-of-memory-does-not-refer-to-physical-memory.aspx. Я добавил правки. surfasb 12 лет назад 0
Добавлено: это просто показывает, насколько запутанной стала физическая память по сравнению с физическим адресным пространством по сравнению с виртуальным адресным пространством по сравнению с виртуальной памятью. surfasb 12 лет назад 0
0
steve b

By default, 32bit apps. can access 2Gb of address space, irrespective of the amount of physical RAM or what 'flags' (such as /3G /PAE) are set ..

Apps. with the LARGEADDRESSAWARE flag set in the .exe header can access up to total (sum of all threads) 3Gb of address space on a 32bit system, 4Gb on a 64bit system.

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