linux 2.6 是 linux 开发周期中的下一个主要版本,它包括了一些强有力的特性,这些特性旨在改进高端
多处理器系统支持问题的分析,请参阅参考资料一节中到 joseph pranevich 的“linux 的精彩世界”的链接)。 【相关文章:开放源代码: 创新与风险的平衡】 企业服务器的性能与支持越来越多的嵌入式设备(要了解更详细的关于 linux 2.6对大型的、小型的以及 【扩展阅读:http://www.myfaq.com】 【扩展信息:Study Points for the】 本文为关注 linux 的用户分析了 linux 2.6 的一些重要特性,并且讨论了驱动程序开发人员可能会感 兴趣的多方面的变化。 linux 2.6亮点 无论是对于企业服务器还是对于嵌入式系统,linux 2.6 都是一个巨大的进步。对高端的机器来说, 新特性针对的是性能改进、可扩展性、吞吐率,以及对 smp 机器 numa 的支持。对于嵌入式领域, 添加了新的体系结构与处理器类型——包括对那些没有硬件控制的内存管理方案的 mmu-less 系统 的支持。并且,与往常一样,为了满足桌面用户群的需要,添加了一整套新的音频与多媒体驱动程序。 在本文中,我们分析了 linux 2.6的一些最引人关注的特性,但是仍有很多值得关注的变化,包括增 强的内核核心转储、快速互斥支持、改进的i/o子系统,等等,在这里我们不能全部讨论。在侧栏中 总结了其中一些,其余的我们在参考资料一节中给出了链接。 新的调度器 2.6版本的 linux 内核使用了由 ingo molnar 开发的新的调度器算法,称为o(1)算法,它在高负载 的情况下执行得极其出色,并且当有很多处理器时也可以很好地扩展。 在2.4版本的调度器中,时间片重算算法要求在所有的进程都用尽它们的时间片以后,它们的新时间 片才会被重新计算。这样的话在一个有很多处理器的系统中,当进程用完它们的时间片以后得等待重 算(以得到新的时间片),从而导致大部分的处理器处于空闲状态;这将影响smp的效率。除此之外, 当空闲的处理器开始执行那些时间片尚未用尽的处于等待状态的进程(如果它们自己的处理器忙), 会导致进程开始在处理器之间“跳跃”。当一个高优先级进程或者交互式进程发生跳跃时,整个系统的 性能就会受到影响。 新的调度器解决上述问题的方法是,基于每个 cpu 来分布时间片,并且取消了全局同步与重算循环。 调度器使用了两个优先级数组,即活动数组与过期数组,可以通过指针来访问它们。活动数组中包含 了所有映射到某个cpu而且时间片尚未用尽的任务。过期数组中包含了一个时间片已经用尽的所有任 务的有序列表。如果所有活动任务的时间片都已用尽,那么指向这两个数组的指针互换,过期数组 (包含了准备运行的任务)成为活动数组,而空的活动数组成为包含过期任务的新数组。数组的索引存 储在一个64位的位图中,找到最高优先级的任务是很容易的。 新的调度器现在不再有大的 runqueue_lock。它维持每个处理器的运行队列/锁机制,以使得两个 不同处理器上的两个进程可以完全并行地休眠、唤醒与上下文切换。重算循环(为进程重新计算时 间片)与 goodness 循环已经被取消,o(1)算法用于 wakeup()与 schedulee()。 新调度器的主要好处包括: ... 下一页