ZONE_NORMAL ассоциация с ядром / пользовательскими страницами - PullRequest
3 голосов
/ 26 декабря 2010

alt text

Выше представлен случай, когда у меня всего 512 МБ физической памяти.До сих пор я читал, что ZONE_NORMAL отображается в виртуальное адресное пространство ядра, как показано.По сути, у меня есть 512 МБ физической памяти, из которых 496 МБ ZONE_NORMAL отображаются в виртуальное пространство ядра.Исходя из этого понимания, мой вопрос следующий:

  • Действительно ли ZONE_NORMAL состоит из только страниц пространства ядра?
  • Если ZONE_NORMAL состоит только из страниц ядра и отображается в виртуальный диапазон адресов пространства ядра, где находятся страницы пространства пользователя ??Кажется, что нет места для страниц пространства пользователя в физической памяти.

Я полностью перепутал случай, когда физическая память меньше 4 ГБ, как показано в этом случае, который я поместилвперед.Я "пропустил" ZONE_HIGHMEM здесь?Как определяется, сколько физической памяти идет в ZONE_NORMAL и сколько идет в ZONE_HIGHMEM?

Буду очень признателен, если кто-нибудь сможет пролить свет на это.

1 Ответ

3 голосов
/ 01 мая 2011

ZONE_NORMAL состоит только из страниц пространства ядра?

=== №.

ZONE_NORMAL означает, что он линейно отображается в физическую память. Смещение между виртуальным адресом и соответствующим физическим адресом является постоянным значением (обычно оно составляет 0xc000,0000). Например, если виртуальный адрес равен 0xc123,0000, то его физический адрес равен 0x0123,0000.

Страницы в ZONE_NORMAL могут использоваться ядром или процессами уровня пользователя, если они не конфликтуют друг с другом.

ZONE_HIGHMEM существует, только когда объем физической памяти превышает 896 МБ.

...