Linux использует систему виртуальной памяти, где все адреса являются виртуальными, а не физическими адресами. Эти виртуальные адреса преобразуются в физические адреса процессором.
Для упрощения перевода виртуальная и физическая память разделены на страницы. Каждой из этих страниц присваивается уникальный номер; номер фрейма страницы.
Некоторые размеры страниц могут составлять 2 КБ, 4 КБ и т. Д. Но как определяется этот размер страницы? На это влияет размер архитектуры? Например, 32-битная шина будет иметь адресное пространство 4 ГБ.
Аппаратное обеспечение (в частности, MMU , который является частью CPU) определяет возможные размеры страниц. Нет никакого отношения к размеру регистра процессора и только косвенное отношение к размеру адресного пространства (в этом MMU определяет оба).
Почти все архитектуры поддерживают размер страницы 4 КБ. Некоторые архитектуры поддерживают страницы большего размера (а некоторые также поддерживают страницы меньшего размера), но 4 КБ - очень распространенное значение по умолчанию.
Linux поддерживает два размера страниц:
CONFIG_HUGETLB_PAGE
необходимо,CONFIG_HUGETLBFS
а также для большинства случаев). Это соответствует второму по глубине уровню дескрипторов MMU (то, что Linux называет PMD) (или, по крайней мере, обычно так и есть, я не знаю, применимо ли это ко всем архитектурам).Размер страницы - это компромисс между использованием памяти, использованием памяти и скоростью.
Преимущества больших размеров страниц для большинства приложений незначительны, а стоимость значительна. Вот почему большинство систем используют только страницы нормального размера.
Вы можете запросить (нормальный) размер страницы на вашей системе с
getconf
утилитой или функции Csysconf
.Для использования огромных страниц требуется монтировать
hugetlbfs
файловую систему иmmap
пинговать туда файлы.источник
Размер страницы зависит в основном от архитектуры процессора. На x86, со времен процессора 386, который ввел защищенный режим, размер страницы составлял 4 кБ.
В режиме x64 также могут быть огромные страницы размером 2 МБ. Однако использовать их немного сложно.
Вы можете найти больше информации о размере страницы в статье Википедии
источник
Процессор определяет доступные размеры страницы. В большинстве случаев аппаратный размер страницы на процессорах x86 и x86_64 составляет 4 КБ. Однако операционная система может выделять более одной страницы за раз, если она этого хочет, и, таким образом, эффективно реализовывать страницы 8 КБ, 16 КБ или 32 КБ в программном обеспечении.
Процессоры x86 и x86_64 также могут смешивать страницы 4 МБ и 2 МБ соответственно со стандартными страницами 4 КБ. Если эта возможность используется вообще, она будет в основном использоваться для выделения пространства ядра.
источник