4.2. Память

4.2.1. Поддерживает ли FreeBSD больше 4 Гбайт памяти (ОЗУ)? Больше 16 Гбайт? Больше 48 Гбайт?
4.2.2. Почему FreeBSD видит меньше 4 Гбайт памяти, когда система установлена на машину i386™?

4.2.1.

Поддерживает ли FreeBSD больше 4 Гбайт памяти (ОЗУ)? Больше 16 Гбайт? Больше 48 Гбайт?

Да. FreeBSD как операционная система в целом поддерживает столько же физической памяти (ОЗУ), сколько аппаратная платформа, на которой она работает. Имейте в виду, что различные платформы имеют различные ограничения на память; например, i386™ без PAE поддерживает максимум 4 Гбайт памяти (и обычно еще меньше из-за адресного пространства PCI), а i386™ с PAE поддерживает максимум 64 Гбайт. Платформы AMD64, существующие на текущий момент, ограничены объемом 1 Тбайт физической памяти.

4.2.2.

Почему FreeBSD видит меньше 4 Гбайт памяти, когда система установлена на машину i386™?

Общее адресное пространство для машин i386™ является 32-разрядным; это означает, что адресоваться (т.е. быть получено) может не более 4 Гбайт памяти. Более того, некоторые адреса в этом диапазоне зарезервированы для различных целей аппаратным обеспечением, например, для использования и управления устройствами PCI, для доступа к видеопамяти, и так далее. Таким образом, общий объем памяти, используемой операционной системой для ядра и приложений, ограничен размером, значительно меньшим, чем 4 Гбайт. В такой конфигурации максимально доступная физическая память составляет от 3.2 Гбайт до 3.7 Гбайт.

Для преодоления ограничения в 3.2 Гбайт-3.7 Гбайт установленной памяти (т.е. для получения 4 Гбайт, но также более 4 Гбайт) должен использоваться специальный механизм, именуемый PAE. Сокращение PAE расшифровывается как Physical Address Extension (расширение физического адреса) и предоставляет для 32-разрядных x86 процессоров способ адресовать более 4 Гбайт памяти. PAE переназначает память, которая иначе была бы перекрыта адресными резервациями для аппаратных устройств выше диапазона 4 Гбайт, и использует ее как дополнительную физическую память (смотрите pae(4)). Использование PAE имеет свои недостатки; такая модель доступа к памяти является чуть более медленной по сравнению с обычным режимом (без PAE), и также не работают динамически загружаемые модули (смотрите kld(4)). Это означает, что все драйверы должны присутствовать статически в самом ядре.

Самый общий способ включить PAE — это собрать новое ядро со специальным уже подготовленным файлом конфигурации ядра, именуемым PAE, который уже сконфигурирован для сборки безопасного ядра. Имейте в виду, что некоторые строки в этом файле конфигурации ядра являются слишком консервативными, и некоторые драйверы, помеченные как неготовые для использования с PAE, на самом деле являются годными. На практике, если драйвер работает на 64-разрядной архитектуре (такой как AMD64), он также работает с PAE. Если вы хотите создать свой собственный файл конфигурации ядра, то вы можете включить PAE, добавив в свою конфигурацию следующую строку:

options       PAE

PAE не является широко используемым в настоящее время, поскольку большинство нового x86 аппаратного обеспечения также поддерживает работу в 64-разрядном режиме, также известном как AMD64 или Intel® 64. Этот режим имеет большее адресное пространство и не нуждается в таких трюках. FreeBSD поддерживает AMD64, и рекомендуется использование этой версии FreeBSD вместо версии i386™, если требуется больше 4 Гбайт памяти.

Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.

По вопросам, связанным с этой документацией, пишите в рассылку <doc@FreeBSD.org>.