linux内存管理之high memory
32位CPU最大寻址为2^32-1也就是4G的线性地址空间。linux一般将其3:1划分,这样内核空间为1G,从0xC000 0000到0xFFFF FFFF。
linux内核采用最简单的映射方式来映射物理内存,即将物理地址+PAGE_OFFSET按照线性关系直接映射到到了内核空间。PAGE_OFFSET为0xC000 0000,但是内核并没有将全部的1G空间全用做线性映射了,而只是映射了896M的物理内存,将剩余的128M虚拟空间地址给了IO设备和其他用途。
所以当系统的物理内存小于1G的时候都可以直接映射到内核区域,但是当物理内存大于1G的时候内核没办法通过线性映射访问。这部分物理内存称为high memory。