start_kernel 是每个进程创建时候调用,还是linux kernel启动时候调用
时间: 2024-04-05 13:30:20 浏览: 150
Linux Arm 启动详解_C语言部分
`start_kernel` 是 Linux 内核的入口函数,它在 Linux 内核启动时被调用。当计算机启动时,BIOS 或 UEFI 固件会将控制权交给引导加载程序(Boot Loader),引导加载程序会从硬盘或网络中加载内核映像(Kernel Image)到内存中,并将控制权交给内核的入口函数 `start_kernel`。从这个意义上来说,可以认为 `start_kernel` 是 Linux 内核启动时被调用的。
`start_kernel` 函数的主要作用是初始化内核的各个子系统,如进程管理、内存管理、文件系统等等。具体来说,它会调用一系列的函数进行初始化,如 `setup_arch()`、`setup_per_cpu_areas()`、`setup_memory()`、`setup_sched()` 等等。一旦所有的子系统都被初始化完毕,`start_kernel` 函数就会调用 `rest_init()` 函数创建系统中的第一个进程,并进入内核主循环(Kernel Main Loop)。这个主循环会一直运行,直到系统关闭。在主循环中,内核会不断地处理各种事件,如进程调度、中断处理、系统调用等等。
阅读全文