在linux内核中,第一个进程初始化在哪里?

时间:2010-03-24 21:05:34

标签: linux-kernel

我正在寻找初始化第一个进程pid = 0的linux内核(2.4.x)中的代码。

许多搜索提供了许多线索,但我仍然无法找到它。

任何指针,任何人?

3 个答案:

答案 0 :(得分:8)

初始任务结构由INIT_TASK()中定义的宏include/linux/init_task.h设置。所有其他任务结构都由do_fork创建。

答案 1 :(得分:1)

start_kernel()

最后查看rest_init()

// idle process, pid = 0
cpu_idle();     // never return

答案 2 :(得分:1)

内核初始化的第一个进程是交换进程或空闲线程。这个线程永远运行。当系统中没有其他进程处于活动状态时,此线程[在ARM体系结构的arch / arm / kernel / process.c中找到的cpu_idle()函数]调用依赖于体系结构的pm_idle函数,该函数将CPU折叠直到定时器中断或其他一些中断唤醒它。

交换器进程[pid = 0]由宏INIT_TASK在arch / arm / kernel / init_task.c中初始化。

相关问题