Linux Kernel 2.6进程调度的分析

第一章Linux Kernel 2.4存在的不足

根据对2.4进程调度的分析,我们总结出看出2.4内核总的特点就是:

内核调度简单有效

内核不可抢占

但是经过对2.4内核的分析,我们也明显看到了它的缺点:

1.调度算法复杂度是O(n),与系统负荷关系较大。而且调度算法在设计上也有缺陷,比如:

(1) 2.4进程调度只设置了一个进程就绪队列,这样有的进程用完了自己时间片以后还要呆在就绪进程队列里面。这样这个进程虽然在这一轮调度循环里面已经无法取得CPU的使用权,但是还要参与goodness()值的计算,这样就白白浪费了时间。

(2) 就绪进程队列是一个全局数据结构,多个CPU只有一个就绪队列runqueue,因而调度器对它的所有操作都会因全局自旋锁而导致系统各个处理机之间的等待,使得就绪队列成为一个明显的瓶颈。

2.调度算法在内核态不可抢占。如果某个进程一旦进了内核态那么再高优先级的进程都无法剥夺,只有等进程返回内核态的时候才可以进行调度。缺乏对实时进程的支持。

相关推荐