Linux 2.6内核新变化

本文探讨了Linux 2.6内核的主要改进,包括结构优化、任务管理提升以及模块编译等方面的革新。
摘要由CSDN通过智能技术生成

Linux 2.6内核新变化
2010/06/17 01:18 A.M.

http://www.lupaworld.com/action_viewstutorial_itemid_3196.html

Linux 内核的开发已经经历了一个漫长的过程,最初是 Linus Torvalds于1991年发布的原始的0.1版本,这个版本中包括一个基本的调度器、IPC(进程间通信)和内存管理算法。而现在它已经是一个以往操作系统的实用的替代品,在市场上表现出了强大的竞争力。越来越多的政府机构和IT巨头的注意力正在转向 Linux。从最小的嵌入式设备到S/390,从手表到大型企业服务器,Linux 现在几乎可以用于所有的地方。

 

  Linux 2.6 是 Linux 开发周期中的下一个主要版本,它包括了一些强有力的特性,这些特性旨在改进高端

     企业服务器的性能和支持越来越多的嵌入式设备(要了解更详细的关于 Linux 2.6对大型的、小型的以及

     多处理器系统支持问题的分析,请参阅参考资料一节中到 Joseph Pranevich 的“Linux 的精彩世界”的链接)。


  本文为关注 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()。


  新调度器的主要好处包括:


  SMP效率:如果有工作需要完成,那么所有处理器都会工作。

  等待进程:没有进程需要长时间地等待处理器;同时,没有进程会无端地占用大量的CPU时间。

  SMP进程映射:进程只映射到一个CPU而且不会在CPU之间跳跃。

  优先级:不重要的任务的优先级低(反之亦然)。

  负载平衡:调度器会降低那些超出处理器负载能力的进程的优先级。

  交互性能:使用新的调度器,即便是在非常高负载的情况下,系统花费很长时间来响应鼠标点击

     或者键盘输入的情况将不会再发生。

 内核抢占

  内核抢占补丁在2.5系列中就已经被打上,接下来在2.6中也会打。这将显著地降低用户交互式

     应用程序、多媒体应用程序等类似应用程序的延迟。这一特性对实时系统和嵌入式系统来说特别有用。


  2.5的内核抢占模块的工作由 Robert Love 完成。在先前的内核版本中(包括2.4内核),不允许抢

     占以内核模式运行的任务(包括通过系统调用进入内核模式的用户任务),直到它们自己主动释放 CPU。

<

共计8个压缩包 本压缩包是:part01.rar 出版社:人民邮电出版社 ·页码:368 页 ·出版日期:2008年 ·ISBN:7115187118/9787115187116 ·条形码:9787115187116 ·包装版本:1版 ·装帧:平装 ·开本:16 ·中文:中文 ·附带品描述:附光盘一张 ·市场价格:49元 内容简介 Linux内核Linux操作系统中最核心的部分,用于实现对硬件部件的编程控制和接口操作。《Linux2.6内核标准教程》深入、系统地讲解了 Linux内核工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先讲解Linux系统的引导过程;然后对Linux内核的3大核心模块——内存管理、进程管理、中断和异常处理进行了深入的分析; 在此基础上,对时间度量、系统调用进行了分析和讨论;最后讲解了Linux内核中常见的同步机制,使读者掌握每处理器变量和RCU这两种的 同步机制。 《Linux2.6内核标准教程》适合Linux内核爱好者、Linux驱动开发人员、Linux系统工程师参考使用,也可以作为计算机及相关专业学生深入学 习操作系统的参考书。 引用: 目录 第1章 Linux内核学习基础 1 1.1 为什么研究Linux内核 2 1.1.1 Linux的历史来源 2 1.1.2 Linux的发展现状 3 1.1.3 Linux的前景展望 3 1.2 选择什么版本进行研究 3 1.3 内核基本结构 4 1.3.1 内核在操作系统中的地位 4 1.3.2 Linux 2.6内核源代码目录树简介 5 1.3.3 Linux 2.6内核特性 8 1.4 如何阅读本书 9 1.4.1 内核探索工具 10 1.4.2 推荐阅读方法 12 第2章 引导过程分析 14 2.1 内核镜像的构建过程 15 2.1.1 编译内核的步骤及分析 15 2.1.2 内核镜像构建过程分析 16 2.2 系统引导过程分析 18 2.2.1 傀儡引导扇区 18 2.2.2 探测系统资源 21 2.2.3 解压内核镜像 35 2.2.4 进入保护模式 40 2.2.5 系统最终初始化 47 2.3 系统引导过程总结 47 第3章 内存管理 50 3.1 基础知识 51 3.1.1 存储器地址 51 3.1.2 分段机制 52 3.1.3 分页机制 59 3.2 内核页表的初始化过程 65 3.2.1 启用分页机制 65 3.2.2 构建内核页表 68 3.3 物理内存的描述方法 76 3.3.1 内存节点 77 3.3.2 内存区域 81 3.3.3 物理页框 85 3.4 物理内存的初始化过程 86 3.4.1 探测系统物理内存 87 3.4.2 初始化内存分配器 89 3.5 物理内存的分配与回收 101 3.5.1 伙伴分配算法 101 3.5.2 对象缓冲技术 103 3.6 内核地址空间 105 3.6.1 常规映射地址空间 105 3.6.2 固定映射地址空间 107 3.6.3 长久内核映射空间 109 3.6.4 临时内核映射空间 116 3.6.5 非连续映射地址空间 119 第4章 进程管理 128 4.1 进程与线程的概念 129 4.1.1 程序与进程 129 4.1.2 进程与线程 129 4.2 进程描述符 131 4.2.1 进程标识符 132 4.2.2 进程的状态 132 4.2.3 进程上下文 134 4.2.4 当前进程 139 4.3 进程的组织形式 143 4.3.1 进程标识符构成的哈希表 143 4.3.2 所有进程构成的双向链表 148 4.3.3 执行态进程组成的运行队列 149 4.3.4 阻塞态进程组成的等待队列 152 4.4 进程的创建过程 155 4.4.1 进程创建的接口函数 156 4.4.2 进程创建的处理过程 162 4.5 进程调度算法 177 4.5.1 进程的分类 178 4.5.2 进程优先级 178 4.5.3 时间片分配 181 4.5.4 进程调度时机 182 4.6 进程切换过程分析 183 4.6.1 选取合适进程 183 4.6.2 完成上下文切换 184 4.7 空闲进程的初始化 187 4.7.1 空闲进程的内核态栈 187 4.7.2 空闲进程的内存描述符 188 4.7.3 空闲进程的硬件上下文 190 4.7.4 空闲进程的任务状态段 190 第5章 中断和异常 192 5.1 基础知识 193 5.1.1 中断和异常的定义 193 5.1.2 中断和异常的分类 193 5.1.3 中断和异常的对比 194 5.2 处理机制 195 5.2.1 IA32架构下的处理机制 195 5.2.2 Linu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值