linux内核地址空间
内核空间是由内核负责映射,它并不会跟着进程改变,是固定的。
高端内存:物理内存896M以上部分称之为高端内存。
内核空间分布:
* 直接内存映射去(Direct Memory Region)
从3G开始,最大896的线性地址区间,我们称作直接内存映射区,这是因为该区域的
线性地址和物理地址之间存在线性转换关系
线性地址=3G+物理地址
* 动态内存映射区(Vmalloc Region)该区域的地址由内核函数vmalloc来进行分配,
其特点是线性空间连续,但对应的物理空间不一定连续。vmalloc分配的线性地址所
对应的物理页可能处于低端内存,也可能处于高端内存。
* 永久内存映射区(PKMap Region)对于896MB以上的高端内存,可使用该区域来访问
,访问方法:
1. 使用alloc_page(__GFP_HIGHMEM)分配高端内存页
2. 使用kmap函数将分配到的高端内存映射到该区域
* 固定映射区(Fixing Mapping Region)
PKMap区上面,有4M的线性空间,被称作固定映射区,它和4G顶端只有4K的隔离带.
固定映射区中每个地址项都服务于特定的用途,如ACPI_BASE等。