根据init / main.c:setup_kernel
/* Disable preemption - early bootup scheduling is extremely
fragile until we cpu_idle for the first time*/
答案 0 :(得分:1)
内核中的抢占允许内核代码在完成之前被抢占。当时,虽然调度程序已经启动,但内核的许多部分尚未配置或设置,因此start_kernel()
确保即使启动定时器中断也会禁用抢占,这样可确保关键的安装任务不会在他们结束之前先占优势。
一旦cpu_idle任务正在运行,如果我正确读取了源,则完成所有必要的早期初始化任务,并且可以重新启用抢占。