0

我只是想了解linux内核如何维护正在运行的进程/排队进程的概念。请指出正在完成的内核源代码。

4

1 回答 1

2

它由调度程序完成,代码位于一堆文件中。从 linux-source/kernel/sched.c 开始并从那里跟踪您的路径。

在 linux 下,如何完成任务调度的概念有点复杂,因为它实际上支持几种不同的调度程序。因此,首先要阅读 linux-source/Documentation/sched-design-CFS.txt 这是“完全公平调度程序”的设计

维护任务的数据结构

在 2.6.x 和 3.x 内核中,任务维护在各种运行队列中。运行队列结构struct rq维护基本的运行队列。然后有每个特定调度程序的运行队列位。例如 cfs_rq (sched.c) 维护 CFS 的队列。( struct task_groups在 sched.c linux/sched.h 中)和任务结构struct task_struct维护任务的实际信息。

sched.c 和 sched.h 只有相关的功能和结构。

于 2013-05-24T04:04:48.313 回答