linux内存映射时拆分为2GB:2GB而不是1GB:3GB

时间:2017-01-05 12:03:25

标签: linux memory memory-management

当内核拥有2GB内存时会发生什么?

  1. 从3GB的虚拟地址空间开始,894MB的直接映射将保持不变。

  2. 为vmalloc预留的临时映射会获得128 MB的虚拟内存,以及低于3GB虚拟地址的新1GB。

  3. 对于2GB内核空间,
  4. 如下图所示。

  5. | ------------------ | 4GB

    | 128MB |

    vmalloc region

    | ------------------ |

    | 896MB |

    | ---------------- | 3GB

    | 1GB |

    vmalloc region

    | ------------------- | 2GB

1 个答案:

答案 0 :(得分:0)

得到了答案..

page_offset必须设置为0x80000000而不是典型的默认值 0xC0000000,这意味着所有高内存区域将映射到896MB内核内存之上。

这个PAGE_OFFSET被__pa(x)和__va(x)用于地址转换。