linux - 早期启动调度极其脆弱

标签 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的依赖是什么

最佳答案

内核中的抢占允许内核代码在完成之前被抢占。当时,虽然调度程序已经启动,但内核的许多部分尚未配置或设置,因此 start_kernel() 确保即使在启动定时器中断时也禁用抢占,从而确保重要的设置任务在完成之前不会被抢占。

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

关于linux - 早期启动调度极其脆弱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23423608/

相关文章:

linux - 使用 X11,如何在忽略某些事件的同时获取用户时间 "away from keyboard"?

linux - 如何在 linux 中使用 join 合并不等长(内连接)的空格分隔文件?

linux - 运行 linux 命令以显示已安装的应用程序和所有权详细信息

c - 数据传输时禁用 ARP

assembly - [R0,R3] 在汇编中起什么作用?

c - 将 C 语言翻译成 ARM 汇编语言

php - 在 windows 和 linux 中使用 codeigniter 时的命名约定问题

c - 如何获取正在运行的 Linux 内核中存在的结构的实例数?

linux - 如何加速 Linux 内核重建

c - 如何从 linux 用户空间进行数据缓存刷新/失效