ARM64 linux kernel virtual address layout
2021/10/3 7:13:34
本文主要是介绍ARM64 linux kernel virtual address layout,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
以下内存布局信息在引导时由Linux内核在我的SoC平台上打印(带有4核Cortex-A53处理器和2.75GiB DRAM)
[ 0.000000] Memory: 2736316K/2883584K available (4796K kernel code, 488K rwdata, 1360K rodata, 448K init, 341K bss, 130884K reserved, 16384K cma-reserved) [ 0.000000] Virtual kernel memory layout: [ 0.000000] modules : 0xffffff8000000000 - 0xffffff8008000000 ( 128 MB) [ 0.000000] vmalloc : 0xffffff8008000000 - 0xffffffbebfff0000 ( 250 GB) [ 0.000000] .text : 0xffffff8008080000 - 0xffffff8008530000 ( 4800 KB) [ 0.000000] .rodata : 0xffffff8008530000 - 0xffffff8008690000 ( 1408 KB) [ 0.000000] .init : 0xffffff8008690000 - 0xffffff8008700000 ( 448 KB) [ 0.000000] .data : 0xffffff8008700000 - 0xffffff800877a200 ( 489 KB) [ 0.000000] .bss : 0xffffff800877a200 - 0xffffff80087cf76c ( 342 KB) [ 0.000000] fixed : 0xffffffbefe7fd000 - 0xffffffbefec00000 ( 4108 KB) [ 0.000000] PCI I/O : 0xffffffbefee00000 - 0xffffffbeffe00000 ( 16 MB) [ 0.000000] vmemmap : 0xffffffbf00000000 - 0xffffffc000000000 ( 4 GB maximum) [ 0.000000] 0xffffffbf00000000 - 0xffffffbf02c00000 ( 44 MB actual) [ 0.000000] memory : 0xffffffc000000000 - 0xffffffc0b0000000 ( 2816 MB)
使用: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 +--------------------------+
from:
https://www.coder.work/article/1883139
这篇关于ARM64 linux kernel virtual address layout的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法