我正在网上的某个地方读书,但我不记得那里...... Linux调度程序试图锻炼"活跃"队列和进程几乎在O(1)中运行。
我的问题是,因为有两个队列,有效和过期。两个队列中的每一个都有140个优先级。因此,对于140个优先级中的每一个,将有单独的进程队列。
如果我必须使用这些数据,我会使用" for循环" 。话虽如此,for循环将是昂贵的,因为在140个队列中的任何一个中都可以有N个进程。因此复杂性应该是O(N),这对于调度程序来说是不可接受的。
那么linux调度程序是如何做到的呢?
答案 0 :(得分:1)
在2.6.23之前的Linux内核2.6版本中,使用的调度程序是IngoMolnár的O(1)调度程序。
此后使用的调度程序是IngoMolnár的完全公平调度程序,它在O(log N)时间内运行。
以下两个教程完整地解释了O(1)调度 Tutorial 1和 Tutorial 2