Посмотрим что сказано об объемах оперативной памяти, поддерживаемых Windows на сайте Microsoft: Тип памяти | Ограничение в 32-х битных Windows | Ограничение в 64-х битных Windows | Виртуальное пользовательское пространство для каждого 32-х битного процесса | 2 Гб До 3 Гб если используется IMAGE_FILE_LARGE_ADDRESS_AWARE и 4GT | 2 Гб 4 Гб при использовании IMAGE_FILE_LARGE_ADDRESS_AWARE | Виртуальное пользовательское пространство для каждого 64-х битного процесса | — | 2 Гб x64:8 Тб при использовании IMAGE_FILE_LARGE_ADDRESS_AWARE Intel IPF:7 Тб при использовании IMAGE_FILE_LARGE_ADDRESS_AWARE | Виртуальное адресное пространство в режиме ядра | 2 Гб От 1 до 2 Гб при использовании 4GT | 8 Тб |
Ограничения объема оперативной памяти: WindowsVista Версия | Ограничение в 32-х битных Windows
| Ограничение в 64-х битных Windows | WindowsVista Ultimate | 4 Гб | 128 Гб | WindowsVista Enterprise | 4 Гб | 128 Гб | WindowsVista Business | 4 Гб | 128 GB | WindowsVista Home Premium | 4 Гб | 16 Гб | WindowsVista Home Basic | 4 Гб | 8 Гб | WindowsVista Starter | 4 Гб | — |
Ограничения объема оперативной памяти: WindowsXP Версия | Ограничение в 32-х битных Windows | Ограничение в 64-х битных Windows | WindowsXP | 4 Гб | 128 Гб | WindowsXP Starter Edition | 512 Мб | — |
IMAGE_FILE_LARGE_ADDRESS_AWARE
– специальный флаг, устанавливаемый в заголовке исполняемого файла,
говорящий о том, что приложение умеет работать с адресами >2Гб. Может
быть установлен указанием соответствующего параметра линковщику. 4-Gigabyte Tuning (4GT)
– ключ загрузки (/3GB), влияющий на распределение памяти выделенной
пользовательскому пространству и пространству ядра. Установка такого
ключа приводит к тому, что для пользовательского пространства выделяется
3 Гб, а для режима ядра, соответственно, резервируется 1 Гб. Очевидно,
что ограничения введенные в этих ОС - искусственные и введены, видимо,
для сегментирования рынка (если хочешь больше памяти купи Windows
подороже). Для расширения доступного для приложений адресного пространства Microsoft предусмотрела специальных механизм Address Windowing Extensions (AWE).
При использовании этого механизма программа организует «окно»,
отображаемое в физическую память, само окно остается в пределах
адресного пространства процесса (очень мне это напоминает одну
технологию для доступа к памяти со времен DOS-а). В Unix системах
аналогичное отображение может быть достигнуто с использованием функции
mmap(). AWE представляет собой набор интерфейсов прикладного программирования (API) для функций диспетчера памяти. Применение интерфейсов AWE позволяет
приложениям получать доступ к памяти за пределами 4 ГБ, доступных при
использовании стандартной 32-разрядной адресации. AWE дает
возможность приложениям зарезервировать физическую памяти в виде
невыгружаемой памяти, а затем динамически сопоставляет участки
невыгружаемой памяти рабочей памяти приложений. Благодаря этому
интенсивно использующие память программы (например большие базы данных)
могут резервировать большие объемы физической памяти для хранения
данных, избегая необходимости переносить данные в файл подкачки и
обратно. Вместо этого обмен данными происходит в рамках рабочей области,
а зарезервированная память превышает 4 ГБ. Кроме того, применяя
расширения РАЕ, диспетчер памяти и функции AWE могут использовать память свыше 4 ГБ (без РАЕ интерфейс AWE не может резервировать память за пределами этого диапазона). Стоит отметить, что программы, поддерживающие механизм AWE,
встречаются достаточно редко – в основном это специализированные
серверные программы, которым просто позарез необходимо использовать
много памяти (какие-нибудь базы данных). Рассмотрим механизм Physical Address Extension (PAE) немного подробнее. Из главы 7 книги «Inside Windows 2000» (David Solomon, Mark Russinovich): «Все процессоры семейства Intel x86, начиная с Pentium Pro имеют режим отображения памяти, называемый Physical Address Extension (PAE). При поддержке со стороны чипсета, режим PAE позволяет адресовать до 64 Гб физической памяти. Когда x86 выполняется в режиме PAE, модуль управления памятью (memory management unit ,MMU) разделяет виртуальные адреса на 4 поля. MMU реализует
как директории страниц (page directories) так и таблицы страниц (page
tables), но также добавляется третий уровень – таблица указателей на
директории страниц (page directory pointer table). В режиме PAE процессор
может адресовать больше физической памяти не за счет третьего уровня
трансляции адресов, а за счет того, что таблицы страниц и директорий
теперь содержат 64-х битные адреса» В
обычном 32-х битном защищенном режиме (страничная адресация),
процессоры x86 используют двухуровневую схему трансляции адресов. При
этом в регистре CR3 хранится
указатель на таблицу – директорию страниц, длиной 4 Кб, содержащую 1024
записи по 4 байта, каждая указывает на таблицу страниц, длиной 4 Кб,
содержащую 1024 записи по 4 байта, указывающих на непосредственно адреса
страниц в памяти. Размер каждой такой страницы – 4 Кб. Включение режима PAE (установкой бита 5 регистра CR4)
приносит серьезные изменения в эту схему. По-умолчанию, размер каждой
страницы остается таким же – 4 Кб. Каждая запись в директории страниц и
таблицы страниц расширяется до 8 байт (64 бита), при этом размер этих
таблиц не изменяется, таким образом, в каждой таблице теперь содержится
только 512 записей. Из-за того что количество записей сократилось вдвое
(в каждой таблице), ввели дополнительный уровень иерархии, и регистр CR3 теперь указывает на маленькую таблицу – таблицу указателей на директории страниц, содержащую всего 4 записи. Записи в директории страниц имеют дополнительный бит PS ( Page Size),
если этот бит установлен, записи в директории страниц указывают не на
таблицы страниц, а на отдельные страницы, размером 2 Мб (таким образом,
установка этого флага убирает один уровень иерархии, вновь оставляя
только два – третий и второй). Еще один интересный бит, содержащийся в
записях в директории таблиц – бит NX (Not eXecutable), отмечающий страницы как «не исполняемые». На установке этого бита основывается механизм защиты, называющийся в Windows DEP. В операционных системах PAE поддерживается: FreeBSD - начиная с версии 4.9 (в 4.х), или с версии 5.1 (в 5.х), во всех релизах серии 6 и более поздних версиях. Linux – Ядро Linux полностью поддерживает PAE с версий 2.6. Ядро с включенной поддержкой PAE требует процессор, который также поддерживает PAE. Mac OS X – версия с процессором Intel поддерживает PAE и бит NX на всех процессорах, поддерживаемых Apple. Solaris – поддерживает PAE начиная с версии 7. Windows PAE поддерживается следующими 32-х битными версиями Windows Версия | Максимально доступный объем памяти | Windows 2000 Advanced Server | 8 Гб | Windows 2000 Datacenter Server | 32 Гб | Windows XP | 4 Гб | Windows Server 2003 Enterprise Edition | 32 Гб | Windows Server 2003 R2 (or SP1) Enterprise Edition | 64 Гб | Windows Server 2003 Datacenter Edition | 64 Гб | Windows Server 2003 Standard Edition | 4 Гб | Windows Vista | 4 Гб | Windows Server 2008 Enterprise or Datacenter Edition | 64 Гб | Windows Server 2008 other editions | 4 Гб |
При подготовке статьи использовались материалы с сайтов: http://www.ixbt.com/soft/windows-4gb.shtml http://msdn.microsoft.com/en-us/library/aa366778.aspx http://en.wikipedia.org/wiki/Physical_Address_Extension
|