早期启动调度非常脆弱

时间:2014-05-02 08:13:20

标签: linux linux-kernel arm linux-device-driver embedded-linux

根据init / main.c:setup_kernel

    /* Disable preemption - early bootup scheduling is extremely
 fragile until we cpu_idle for the first time*/
  1. 为什么它被称为脆弱?任何具体原因
  2. 它对cpu_idle的依赖性

1 个答案:

答案 0 :(得分:1)

内核中的抢占允许内核代码在完成之前被抢占。当时,虽然调度程序已经启动,但内核的许多部分尚未配置或设置,因此start_kernel()确保即使启动定时器中断也会禁用抢占,这样可确保关键的安装任务不会在他们结束之前先占优势。

一旦cpu_idle任务正在运行,如果我正确读取了源,则完成所有必要的早期初始化任务,并且可以重新启用抢占。