【问题标题】:linux memory mapping when the split is 2GB:2GB instead of 1GB:3GB拆分为2GB:2GB而不是1GB:3GB时的linux内存映射
【发布时间】:2017-05-19 23:20:00
【问题描述】:

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

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

  2. 将为 vmalloc 预留的临时映射获得更多 128 MB 的虚拟内存,并再次获得低于 3GB 虚拟地址的新 1GB。 ?

  3. 下图是 2GB 内核空间的情况。

|-----------------|4GB

| 128MB |

vmalloc 区域

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

| 896MB |

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

| 1GB |

vmalloc 区域

|-------|2GB

【问题讨论】:

    标签: linux memory memory-management


    【解决方案1】:

    得到答案..

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-27
      • 1970-01-01
      • 2014-01-14
      • 2011-07-02
      • 2012-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多