【发布时间】:2023-04-02 22:29:01
【问题描述】:
我在玩 Linux 内核,我不明白的一件事是 init_task 任务的 pid。
据我所知,有两个特殊的 pid:pid 0 用于空闲/交换任务,pid 1 用于 init 任务。
每个在线资源(例如one、two)我可以找到说init_task 任务代表交换任务,即它应该有 pid 0。
但是,当我使用从 init_task 开始的 for_each_process 宏打印所有 pid 时,我将 pid 1 作为第一个进程。我根本没有得到 pid 0。这意味着init_task 的 pid 为 1,它是初始化任务 (?!)。
请帮我解决这个困惑。
附:内核版本是2.4。
【问题讨论】:
-
神圣著作:
#define for_each_process(p) \ for (p = &init_task ; (p = next_task(p)) != &init_task ; )。你必须在某个地方看到init_task...是的,init_task是交换者。