Книга: Разработка ядра Linux

Размер страницы памяти

Размер страницы памяти

При работе со страницами памяти никогда нельзя привязываться к конкретному размеру страницы. Программисты, которые разрабатывают для аппаратной платформы x86, часто делают ошибку, считая, что размер страницы всегда равен 4 Кбайта. Хотя это справедливо для платформы x86, для других аппаратных платформ размер станицы может быть другим. Некоторые аппаратные платформы поддерживают несколько размеров страниц! В табл. 19.1 приведен список размеров страниц памяти для всех поддерживаемых аппаратных платформ.

Таблица 19.4. Размеры страниц памяти для разных аппаратных платформ

Аппаратная платформа Значение PAGE_SHIFT Значение PAGE_SIZE
alpha 13 8 Кбайт
arm 12, 14, 15 4 Кбайт, 16 Кбайт, 32 Кбайт
cris 13 8 Кбайт
h8300 12 4 Кбайт
i386 12 4 Кбайт
ia64 12, 13, 14, 16 4 Кбайт, 8 Кбайт, 32 Кбайт, 64 Кбайт
m68k 12, 13 4 Кбайт, 8 Кбайт
m86knommu 12 4 Кбайт
mips 12 4 Кбайт
mips64 12 4 Кбайт
parisc 12 4 Кбайт
ppc 12 4 Кбайт
ppc64 12 4 Кбайт
s390 12 4 Кбайт
sh 12 4 Кбайт
spare 12,13 4 Кбайт, 8 Кбайт
sparc64 13 8 Кбайт
v850 12 4 Кбайт
x86_64 12 4 Кбайт

При работе со страницами памяти необходимо использовать константу PAGE_SIZE, которая содержит размер страницы памяти в байтах.

Значение макроса PAGE_SHIFT — это количество битов, на которое необходимо сдвинуть влево значение адреса, чтобы получить номер соответствующей страницы памяти. Например, для аппаратной платформы x86, для которой размер страницы равен 4 Кбайт, макрос PAGE_SIZE равен 4096, а макрос PAGE_SHIFT — 12. Эти значения содержатся в заголовочном файле <asm/page.h>.

Оглавление книги


Генерация: 0.082. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз