October 2017
Intermediate to advanced
354 pages
9h 28m
English
For efficient management of memory allocations, physical pages are organized into groups called zones. Pages in each zone are utilized for specific needs like DMA, high memory, and other regular allocation needs. An enum in kernel header mmzone.h declares zone constants:
/* include/linux/mmzone.h */enum zone_type {#ifdef CONFIG_ZONE_DMAZONE_DMA,#endif#ifdef CONFIG_ZONE_DMA32 ZONE_DMA32,#endif#ifdef CONFIG_HIGHMEM ZONE_HIGHMEM,#endif ZONE_MOVABLE,#ifdef CONFIG_ZONE_DEVICE ZONE_DEVICE,#endif __MAX_NR_ZONES};
ZONE_DMA: Pages in this zone are reserved for devices which cannot initiate DMA on all addressable memory. Size of this zone is architecture specific:
| Architecture | Limit |
| parsic, ia64, sparc | <4G |
| s390 | <2G |
| ARM | variable ... |