Ядро Linux использует растровое изображение, чтобы указать тип переноса блока страницы.Тем не менее, растровое изображение определяется как pageblock_flags в struct zone.
struct zone {
...
unsigned long *pageblock_flags;
...
};
Однако нам необходимо 3 бита для представления типа переноса, что означает, что самое большее pageblock_flags
представляет 64/3 блоков страниц.Этого достаточно?Каждый блок страницы занимает всего 4 МБ, зона может содержать 1 ГБ памяти.Как это работает?