Главная » Ядро Linux » Размер страницы памяти

0

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

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

Аппаратнаяплатформа

alpha

Значение  PAGE_SHIFT

13

Значение PAGE_SIZ E

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

1                        •

12

4 Кбайт

parisc

12

4 Кбайт

ррс

12

4 Кбайт

ррс64

12

4 Кбайт

S390

12

4 Кбайт

sh

12

4 Кбайт

spare

12,13

4 Кбайт, 8 Кбайт

sparc64

13

8 Кбайт

v850 х86_64

12

4 Кбайт

4 Кбайт

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

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

Источник: Лав,  Роберт. Разработка ядра  Linux, 2-е  издание. : Пер.  с англ.  — М.  : ООО  «И.Д.  Вильяме» 2006. — 448 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии