如何解释ARM64上的虚拟内核内存布局?

时间:2018-08-20 10:15:59

标签: linux arm64 memory-layout

以下内存布局信息是在启动时由Linux内核在我的SoC平台(带有4核Cortex-A53处理器和2.75GiB DRAM)上打印的,但是我不完全了解布局的内容:< / p>

arr = ['abc']
if condition:
    arr.append('def')

能否请您浏览这些部分和/或指出URL以获取更多详细信息?

非常感谢!

1 个答案:

答案 0 :(得分:2)

在阅读了一些帖子之后,我提出了以下内存映射图。

使用:

  • CONFIG_ARM64_PAGE_SHIFT=12
  • CONFIG_PGTABLE_LEVELS=3
  • CONFIG_ARM64_VA_BITS=39

虚拟内存的总体布局:

--------------------> +--------------------------+
ffff:ffff:ffff:ffff   |                          |
                      |                          |                
                      |                          | 
ffff:ffc0:0000:0000   |----- Kernel (512G)-------| <-- PAGE_OFFSET
                      |                          |
                      |                          |
ffff:ff80:0000:0000   |                          |
--------------------> +--------------------------+
ffff:ff7f:ffff:ffff   |//////////////////////////|
                      |//////////////////////////|
                      |//////////////////////////|
                      |//////////////////////////|
                      |//////////////////////////|
                      |//////////////////////////|
                      z //////////////////////// z
                      |//////////////////////////|
                      |//////////////////////////|
                      |//////////////////////////|
                      |//////////////////////////|
                      |//////////////////////////|
0000:0080:0000:0000   |//////////////////////////|
--------------------> +--------------------------+
0000:007f:ffff:ffff   |                          |
                      |                          |
                      |                          |
                      |      User (512G)         |
                      |                          |
                      |                          |
0000:0000:0000:0000   |                          |
--------------------> +--------------------------+

...以及内核虚拟内存布局:

ffff:ffff:ffff:ffff   +--------------------------+
                      |                          |
                      |                          |
                      z                          z
                      |                          |
                      |                          |
ffff:ffc0:b000:0000   |--------------------------|                       1:b000:0000 +------------------------+
                      |                          |                                   |                        |
                      |     memory (2.75G)       |                                   | Physical DRAM (2.75G)  |
                      |                          |                                   |                        |
ffff:ffc0:0000:0000   +==========================+  <-- PAGE_OFFSET  --> 1:0000:0000 +------------------------+
                      |                          |
                      |                          |
                      |                          |
                      |      vmemmap (4G)        |
                      | +----------------------+ |
                      | |    actual (44M)      | |
ffff:ffbf:0000:0000   +--------------------------+
                      |//////////////////////////|
ffff:ffbe:ffe0:0000   +--------------------------+
                      |     PCI I/O (16M)        |
ffff:ffbe:fee0:0000   +--------------------------+
                      |//////////////////////////|
ffff:ffbe:fec0:0000   +--------------------------+
                      |     fixed (4M)           |
ffff:ffbe:fe7f:d000   +--------------------------+
                      |//////////////////////////|
ffff:ffbe:bfff:0000   +--------------------------+
                      |                          |
                      |                          |
                      |                          |
                      |                          |
                      |                          |
                      |                          |
                      z     vmalloc (250G)       z
                      |                          |
                      |                          |
                      |                          |
                      |                          |
                      |                          |
                      |                          |
ffff:ff80:087c:f76c   | +----------------------+ |
                      | |        .bss          | |
                      | |        .data         | |
                      | |        .init         | |  Kernel
                      | |        .rodata       | |
                      | |        .text         | |
ffff:ff80:0808:0000   | +----------------------+ |
ffff:ff80:0800:0000   +--------------------------+
                      |     modules (128M)       |
ffff:ff80:0000:0000   +--------------------------+

参考文献: