- 根据功能对 linux启动过程的分类(注意:arm1176jzfs不支持多核)
功能 | cpu0 | cpu1 | cpu2 | |
---|---|---|---|---|
1st | cpu的初始化 | stext -> start_kernel | (smp_init->secondary_startup) -> secondary_start_kernel | 同cpu1 |
2nd | 内核(生产者)初始化 | start_kernel -> (cpu_startup_entry->do_idle) | secondary_start_kernel -> (cpu_startup_entry->do_idle) | 同cpu1 |
3rd | 内核(消费者)及用户空间初始化 | kenel_init -> … | 其他进程 | 其他进程,不同于cpu1 |
对于 arm1176jzfs 的 s3c6410 来说,只有cpu0
1st 和 2nd 都正确
3rd 中跑的 是 所有的进程,包括 0 1 2 ...
第一阶段第二阶段 已经将内核初始化好了,但是还没有开始 大规模的使用内核
第三阶段主要是 进程0 进程1 进程2,负责使用内核的服务