linux调度程序如何管理进程调度?

时间:2014-04-27 09:30:31

标签: linux-kernel scheduler

我正在网上的某个地方读书,但我不记得那里...... Linux调度程序试图锻炼"活跃"队列和进程几乎在O(1)中运行。

我的问题是,因为有两个队列,有效和过期。两个队列中的每一个都有140个优先级。因此,对于140个优先级中的每一个,将有单独的进程队列。

如果我必须使用这些数据,我会使用" for循环" 。话虽如此,for循环将是昂贵的,因为在140个队列中的任何一个中都可以有N个进程。因此复杂性应该是O(N),这对于调度程序来说是不可接受的。

那么linux调度程序是如何做到的呢?

1 个答案:

答案 0 :(得分:1)

在2.6.23之前的Linux内核2.6版本中,使用的调度程序是IngoMolnár的O(1)调度程序。

此后使用的调度程序是IngoMolnár的完全公平调度程序,它在O(log N)时间内运行。

查看wikipedia article

以下两个教程完整地解释了O(1)调度 Tutorial 1Tutorial 2