通常,32位Linux内核地址空间分为0~3G作为用户空间和3~4G作为内核空间。地址分配如下图
内核地址空间分配
直接映射区:线性空间中从3G开始到896M的区间是直接内存映射区。该字段中线性地址与物理地址之间存在线性转换关系:线性地址=3G+物理地址。
动态内存映射区域:该区域由内核函数vmalloc分配:其特点是:线性空间是连续的,但对应的物理空间不一定是连续的。vmalloc分配的线性地址对应的物理页可能位于低端内存,也可能位于高端内存。
持久内存映射区域:该区域可以访问高端内存。访问方式是使用alloc_page(_GFP_HIGHMEM)分配高端内存页或者使用kmap函数映射分配到该区域的高端内存。
固定映射区域:该区域和4G之上只有4k隔离区域,每个地址项都有特定的用途,例如ACPI_BASE等。
上一篇:云计算大数据物联网人工智能
下一篇:linux设置jvm内存参数