zone 空闲页管理:
/* Free memory management - zoned buddy allocator. */ #ifndef CONFIG_FORCE_MAX_ZONEORDER #define MAX_ORDER 11 #else #define MAX_ORDER CONFIG_FORCE_MAX_ZONEORDER #endif #define MAX_ORDER_NR_PAGES (1 << (MAX_ORDER - 1))
/* free areas of different sizes */ struct free_area free_area[MAX_ORDER];
Order MIGRATE_TYPES --------------- ----> ------------------ |free_area:0 | |MIGRATE_UNMOVABLE | --------------- |MIGRATE_MOVABLE | |MIGRATE_RECLAIMABLE| |MIGRATE_PCPTYPES | |MIGRATE_CMA | |MIGRATE_ISOLATE | | nr_free | --------------------- ---------------- ----> ------------------ |free_area:1 | |MIGRATE_UNMOVABLE | --------------- |MIGRATE_MOVABLE | |MIGRATE_RECLAIMABLE| |MIGRATE_PCPTYPES | |MIGRATE_CMA | |MIGRATE_ISOLATE | | nr_free | --------------------- --------------- ----> ------------------ |free_area:2 | |MIGRATE_UNMOVABLE | --------------- |MIGRATE_MOVABLE | |MIGRATE_RECLAIMABLE| |MIGRATE_PCPTYPES | |MIGRATE_CMA | |MIGRATE_ISOLATE | | nr_free | --------------------- ---------------- ----> ------------------ |free_area:3 | |MIGRATE_UNMOVABLE | --------------- |MIGRATE_MOVABLE | |MIGRATE_RECLAIMABLE| |MIGRATE_PCPTYPES | |MIGRATE_CMA | |MIGRATE_ISOLATE | | nr_free | --------------------- --------------- ----> ------------------ |free_area:4 | |MIGRATE_UNMOVABLE | --------------- |MIGRATE_MOVABLE | |MIGRATE_RECLAIMABLE| |MIGRATE_PCPTYPES | |MIGRATE_CMA | |MIGRATE_ISOLATE | | nr_free | --------------------- ---------------- ----> ------------------ |free_area:5 | |MIGRATE_UNMOVABLE | --------------- |MIGRATE_MOVABLE | |MIGRATE_RECLAIMABLE| |MIGRATE_PCPTYPES | |MIGRATE_CMA | |MIGRATE_ISOLATE | | nr_free | --------------------- --------------- ----> ------------------ |free_area:6 | |MIGRATE_UNMOVABLE | --------------- |MIGRATE_MOVABLE | |MIGRATE_RECLAIMABLE| |MIGRATE_PCPTYPES | |MIGRATE_CMA | |MIGRATE_ISOLATE | | nr_free | --------------------- ---------------- ----> ------------------ |free_area:7 | |MIGRATE_UNMOVABLE | --------------- |MIGRATE_MOVABLE | |MIGRATE_RECLAIMABLE| |MIGRATE_PCPTYPES | |MIGRATE_CMA | |MIGRATE_ISOLATE | | nr_free | --------------------- --------------- ----> ------------------ |free_area:8 | |MIGRATE_UNMOVABLE | --------------- |MIGRATE_MOVABLE | |MIGRATE_RECLAIMABLE| |MIGRATE_PCPTYPES | |MIGRATE_CMA | |MIGRATE_ISOLATE | | nr_free | --------------------- ---------------- ----> ------------------ |free_area:9 | |MIGRATE_UNMOVABLE | --------------- |MIGRATE_MOVABLE | |MIGRATE_RECLAIMABLE| |MIGRATE_PCPTYPES | |MIGRATE_CMA | |MIGRATE_ISOLATE | | nr_free | --------------------- --------------- ----> ------------------ |free_area:10 | |MIGRATE_UNMOVABLE | --------------- |MIGRATE_MOVABLE | |MIGRATE_RECLAIMABLE| |MIGRATE_PCPTYPES | |MIGRATE_CMA | |MIGRATE_ISOLATE | | nr_free | ---------------------