Linux内存管理(十一):paging_init 详解

源码基于:Kernel 5.4

约定:

  • 芯片架构:ARM64
  • CONFIG_ARM64_VA_BITS:39
  • CONFIG_ARM64_PAGE_SHIFT:12

0. 前言

从 memblock初始化 一文中得知在 paging_init() 调用之前,存放 Kernel Image 和DTB 两端物理内存区域可以访问 (相应的页表已经建立好)。在 memblock 初始化之后,物理内存已经添加到系统,但是这部分的物理内存到虚拟内存的映射还没有建立,可以通过 memblock_alloc() 分配一段物理内存,但是无法访问,一切还需要等待 paging_init() 之后,建立最终的页表,从而实现物理内存到虚拟内存的映射。

按照 VA_BITS=39,PAGE_SHIFT=12(4K) 来看下ARM64内存的内存分布图:

Linux内存管理(十一):paging_init 详解_第1张图片

你可能感兴趣的:(Linux,内存管理,linux,paging_init,memblock,map_kernel,map_mem)