Выше представлен случай, когда у меня всего 512 Мб физической памяти. До сих пор я читал, что ZONE_NORMAL сопоставляется с виртуальным адресным пространством ядра, как показано. По сути, у меня есть 512 МБ физической памяти, из которых 496 МБ на ZONE_NORMAL отображаются на виртуальное пространство ядра. Исходя из этого понимания, у меня возникает следующий вопрос:
- Состоит ли ZONE_NORMAL из только страниц пространства ядра?
- Если ZONE_NORMAL состоит только из страниц ядра и полностью сопоставляется с диапазоном виртуальных адресов пространства ядра, где размещаются страницы пользовательского пространства?? Кажется, что в физической памяти нет места для страниц пользовательского пространства.
Я полностью запутался в случае, когда физическая память меньше 4 ГБ, как показано в этом случае, который я представил. Я "пропустил" здесь ZONE_HIGHMEM? Как определяется, какая часть физической памяти занимает ZONE_NORMAL, а какая — ZONE_HIGHMEM?
Был бы очень признателен, если кто-то может пролить свет на это.