内核中运行进程的链接列表3. *

时间:2013-08-04 13:07:35

标签: process linux-kernel scheduling

我想知道每个进程的下一个和前一个进程,它的状态是“TASK_RUNNING”。 在较旧的内核中,有一个run_list结构作为task_struct的成员。我怎么能在内核3中做这样的事情?例如,跟踪正在运行的进程列表,但我不知道在内核3中将哪个结构定义为此类列表。

1 个答案:

答案 0 :(得分:4)

在较新的内核中,Linux不维护所有正在运行的进程的列表。相反,CFS使用sched_entity的红黑树来存储有关正在运行的进程的信息。

task_struct包含se类型的成员sched_entity。 Sched实体包含run_node类型的成员struct rb_node。这就是你要找的东西。

请咨询include/linux/rbtree.h以了解rbtree的界面。要从task_struct中提取sched_entity,您可以使用container_of(your_se, struct task_struct, se);(咨询task_of()中的kernel/sched/fair.c