Використання 32-бітної пам'яті додатків в 64-бітній операційній системі.


13

Якщо моя операційна система 64-бітна, чи можуть мої 32-бітні програми використовують 64-бітну пам'ять (> 3,5 ГБ)?

Відповіді:


6

Якщо програма знає AWE, то вони можуть використовувати адресний простір понад 4 Гб, хоча і менш ефективно, ніж 64-бітний додаток. Для 32-бітних процесів під 32-бітовими варіантами Windows можна отримати доступ більше, ніж дозволяв би 32-бітний адресний простір, якщо PAE вмикається і процес може його використовувати.

Індивідуальний 32-бітний процес (який не відомий AWE) зазвичай обмежений 3Gb (перший Gb його віртуального адресного простору зарезервований для дії, пов’язаної з ядром), але якщо ви запустите кілька процесів, вони зможуть більше використовувати в загальний (кожен може використовувати до 3 Гб, загальна кількість пам'яті), оскільки їхні віртуальні адресні простори не поділяються.

Обмеження на процес є більш корисним у середовищі, схожій на Unix, де послуги, як правило, базуються на процесах, а не на основі потоків (кілька потоків в одному процесі поділяють ресурси процесів і, отже, мають єдиний 3Gb віртуальний адресний простір), як це більше в Windows (запуск нового процесу в Windows як досить дорогий, тому перевагу надають потоки; в більшості середовищ Unix запуск нового процесу не набагато більше затрат ресурсів, ніж запуск нового потоку) . Наприклад, це не дуже корисно для машини, на якій працює тільки SQL Server, тому що це буде лише один процес, тому буде досягнуто обмеження 3Gb (деякі видання можна налаштувати так, щоб вони були відомі AWE, але не всі, і функцію планується видалити в наступному великому випуску) .

Як і 32-розрядні процеси, здатні використовувати більше 3Gb в цілому, ОС зможе використовувати будь-яку невикористану пам’ять для кешування диска, тому вона може не витрачатися на максимум, якщо умови не відкривають файли таким чином як сказати ОС не заважати робити це.


32-бітний процес із набором IMAGE_FILE_LARGE_ADDRESS_AWARE має обмеження 4 Гб, а не 3. msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx
Марк Совул

5

Якщо програма використовує AWE , тоді так (хоча це не обмежено 64-бітними ОС). Без цього процес все ще обмежений адресним простором 4 Гб.


-1, хоча це правда, я думаю, що часткова відповідь вводить в оману, оскільки жоден (не AWE) 32-бітний процес ніколи не матиме 4 Гб оперативної пам’яті.
pipTheGeek

@pipTheGeek Помилка: 32-бітний процес із набором IMAGE_FILE_LARGE_ADDRESS_AWARE = ​​4 ГБ доступно. msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx
Марк Совул

@Mark - я забув це, і я виправив свою відповідь нижче. Я все ще думаю, що ця відповідь є неповною.
pipTheGeek

3

Сорта, залежно від того, що ти маєш на увазі.

Припустимо, що Windows ...

Якщо ОС 64-розрядна, 32-бітний процес за замовчуванням отримує 2 ГБ віртуального адресного простору для користувачів. Якщо заголовок PE файлу .exe позначений прапором IMAGE_FILE_LARGE_ADDRESS_AWARE, то процес отримає 4 ГБ віртуального адресного простору, адресованого користувачем. У будь-якому випадку віртуальний адресний простір ядра такий самий, як і 64-бітні процеси, оскільки він спільний для всіх процесів. Також зауважимо, що 64-бітні процеси, які не встановлюють прапор IMAGE_FILE_LARGE_ADDRESS_AWARE, також мають доступ до 2 ГБ віртуального адресного простору користувача.

Що ви чуєте про спеціальні прапори завантаження, перемикачі на 3 ГБ, / 3 ГБ або / Userva - це 32-бітні операційні системи і не застосовуються в 64-бітних Windows.

Про це все пішло на жаль, на сторінці « Обмеження пам’яті Microsoft для Windows» - «Обмеження пам’яті» .

Відповідь @David Spillett торкається і іншого моменту: Кілька процесів, обмежені користувачем простором 2 Гб, все ще можуть використовувати значну кількість оперативної пам’яті, якщо вона є, як і кеш файлів.


0

32-бітний процес в 32-бітній ОС має адресний простір 4 Гб, 2 ГБ якого зарезервовано ОС, 2 ГБ доступні для процесу.
Існує перемикач, який можна вказати на ОС (/ 3 ГБ), який змінює кількість, зарезервовану для ОС, лише на 1 ГБ і дозволяє процесу мати 3 ГБ, АЛЕ, лише якщо процес оголошує його самовизначенням як велику адресу, відоме у прапорах виконуваного файлу.

У 64-розрядної ОС 32-бітний процес отримає 4 Гб, якщо він знає велику адресу, інакше 2 ГБ.

Все це для процесів, які не знають AWE. Якщо процес здатний використовувати AWE, тоді, як говорили інші, він може використовувати великий адресний простір, але менш ефективно, ніж 64-бітний процес.

PAE дозволяє 32-бітній ОС використовувати більше 4 Гб оперативної пам’яті, однак у неї є проблеми зі сумісністю і її відключили в XP одним із пакетів послуг, тому вона доступна лише у версіях ОС сервера.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.