物理内存的划分
Linux把每个物理内存划分成3个管理区
内存区域 |
说明 |
ZONE_DMA |
范围是0~16M,该区域的物理页面专门供I/O设备的DMA使用 |
ZONE_NORMAL |
范围是16~896M,该区域的物理页面是内核能够直接使用的 |
ZONE_HIGHMEM |
范围是896~结束,高端内存,内核不能直接使用 |
高端内存的由来
通常32位Linux内核地址空间划分0 ~ 3G为用户空间,3 ~ 4G为内核空间

当内核模块代码或线程访问内存时,代码中的内存地址都为逻辑地址,而对应到真正的物理内存地址,需要地址一对一的映射。
物理地址 = 逻辑地址 – 0xC0000000</