Linux内存管理(六):start_kernel 详解

源码基于:Linux 5.4

约定:

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

0. 前言

在bootloader 做好初始化工作后,将 kernel image 加载到内存后,就会跳到kernel 部分继续执行,跑的先是汇编部分的代码,进行各种设置和环境初始化后,就会跳到 kernel 的第一个函数start_kernel(),start_kernel() 完成内核系统的所有配置和初始化,其中 setup_arch() 是早期系统的配置和初始化工作。 

该系列专栏,会通过源码的深入剖析来查看内存管理系统的原理。本文将会是这个系列专栏代码剖析的起点。

1. start_kernel 中内存管理代码流程

----start_kernel()                         // init/main.c

    ----setup_arch()                       // arch/arm64/kernel/setup.c
        ----early_fixmap_init()            // arch/arm64/mm/mmu.c
        ----early_ioremap_init()           // arch/arm64/mm/ioremap.c
        ----setup_machine_fdt()        

猜你喜欢

转载自blog.csdn.net/jingerppp/article/details/132969069