Linux内核内存管理( 十 )


3 虚拟可移动内存域
在依据可移动性组织页的技术之前,还有一个方法已经合入,那就是虚拟内存域: 。基本思想很简单:把内存分为两部分,可移动的和不可移动的 。
enum zone_type {#ifdef CONFIG_ZONE_DMAZONE_DMA,#endif#ifdef CONFIG_ZONE_DMA32ZONE_DMA32,#endifZONE_NORMAL,#ifdef CONFIG_HIGHMEMZONE_HIGHMEM,#endifZONE_MOVABLE,__MAX_NR_ZONES
};
的启用需要指定参数或者,用来指定不可移动的内存数量,指定可移动的内存大小,如果两个都指定,取不可移动内存数量较大的一个 。如果都不指定,则不启动 。
与其它内存域不同的是不关联任何物理内存范围,该域的内存取自高端内存域或者普通内存域 。用来计算每个node中的内存数量,采用的内存区域通常是每个node的最高内存域,在函数中体现 。
在对每个node分配内存时,会被平均分配到各个Node:
=/ ;
【Linux内核内存管理】在 alloc page时,如果同时指定了和,则会从内存域申请内存 。