Простой вопрос: могут ли приложения x86 использовать дополнительное ОЗУ, которое дает ОС x64? - PullRequest
4 голосов
/ 15 февраля 2011

Я надеюсь, что кто-то с небольшим знанием может прояснить это. Существует много дискуссий о причинах запуска 64-битной ОС (например, Windows 7 x64), но многие люди, похоже, думают, что их старые приложения x86 смогут использовать любую оперативную память объемом более 3,5 ГБ.

Однако, насколько я понимаю, приложения x86 не могут обращаться к памяти с таким высоким ... если они не были специально запрограммированы (что будет иметь очень немногие).

Может ли кто-нибудь знающий прояснить это для меня раз и навсегда? Могут ли 32-разрядные приложения использовать систему с 8 ГБ ОЗУ?

например. Если пользователь решил (по какой-либо причине) запустить несколько приложений x86 одновременно, максимально заполняя оперативную память, будет ли использоваться дополнительная адресуемая память, доступная в Windows 7 x64 ?

Спасибо!

Ответы [ 5 ]

4 голосов
/ 15 февраля 2011

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

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

3 голосов
/ 15 февраля 2011

Хотя у меня нет источников для цитирования, но насколько я знаю: 32-битное приложение не сможет обрабатывать более 4 ГБ памяти, если не использовать некоторые приемы (что очень маловероятно), но если у вас есть некоторые32-разрядные приложения, работающие одновременно, все они могут иметь по 4 ГБ каждое, и поэтому два 32-разрядных приложения должны иметь возможность использовать все 8 ГБ памяти.Хотя я не уверен на 100%.

2 голосов
/ 15 февраля 2011

Добавление к другим (правильным) ответам:

  1. Вместо термина «заявка» следует использовать слово «процесс». Приложения часто состоят из нескольких процессов, тогда как обсуждаемые здесь ограничения применяются к отдельным процессам.
  2. Таким образом, приложения используют x64, которые либо связаны с флагом LARGEADDRESSAWARE (они могут использовать 4 ГБ вместо 2 ГБ), либо распределяют нагрузку между несколькими процессами.
  3. 32-разрядные процессы могут работать с более чем 4 ГБ ОЗУ даже в 32-разрядных системах с использованием AWE. Но 32-битный процесс может использовать только 2 ГБ одновременно (4 ГБ с LARGEADDRESSAWARE на 64-битной соответственно). AWE в основном используется базами данных, где для производительности важно, чтобы вся база данных помещалась в ОЗУ. Он работает, предоставляя окно размером 2 ГБ в больший кусок памяти.

Вот несколько статей для дальнейшего чтения:

Windows x64 - все то же самое, но очень разные, часть 1: виртуальная память

Windows x64 - все то же самое, но очень разные, часть 2: память ядра, / 3 ГБ, PTE, (не) выгружаемый пул

x64? Мои терминальные серверы отлично работают с 32 битами и 8/12/16 ГБ ОЗУ!

2 голосов
/ 15 февраля 2011

Да.Приложения x86 не могут использовать более 2 ГБ памяти одновременно без специальных приемов, но они могут использовать любую доступную память.

1 голос
/ 15 февраля 2011

например. Если пользователь решил (для чего бы то ни было причина), чтобы запустить несколько приложений x86 в один раз, заполняя ОЗУ столько, сколько возможно, будет ли дополнительный адрес доступная память в Windows 7 x64 be б

Ответ - да. Это одно из преимуществ, которые дает нам виртуальное адресное пространство - способность каждого процесса появляться (для процесса), как если бы он выполнялся в линейном адресном пространстве, которое начинается с 0 и увеличивается оттуда.

Что касается каждого из 32-битных приложений, то оно имеет свое собственное адресное пространство от 0 до 2 гигабайт (без специальных уловок). Операционная система обрабатывает преобразование виртуальных адресов в физические.

...