Linux内核2.6 的来龙去脉

什么是Linux内核? 

  内核是我们通常所说的“Linux技术奇迹”的最重要特征。

  在IT术语中,内核既是操作系统的心脏,也是它的大脑,因为内核控制着基本的硬件。内核是操作系统的核心,具有很多最基本功能,如虚拟内存、多任务、共享库、需求加载、共享的写时拷贝(copy-on-write)可执行程序和TCP/IP网络功能。

  Linux内核的起源可追溯到1991年芬兰大学生Linus Torvalds编写和第一次公布Linux的日子。尽管到目前为止Linux 生态系统早已远远发展到了Torvalds本人之外的范围,但Torvalds仍保持着对Linux内核的控制权,并且是Linux名称的唯一版权所有 人。自发布Linux 0.12版起,Linux就一直依照GPL(通用公共许可协议)自由软件许可协议进行授权。

  Linux内核本身并不是操作系统,它是一个完整操作系统的组成部分。Red Hat、Novell、Debian和Gentoo等Linux发行商都采用Linux内核,然后加入更多的工具、库和应用程序来构建一个完整的操作系统。

  Linux发行商一般会根据自己的需要对基本内核进行定制,在一些情况下,不同的Linux版本会在自己的内核中加入主内核中没有的特性和支 持,如Red Hat将部分2.6内核的特性向前移植到它自己的2.4.x内核中;再如Ubuntu Linux版本最近在Ubuntu的 2.6.15 Linux内核中增加了对Sun T1处理器的支持,而这种支持目前还没有出现在主内核中。

  内核的发展

  Linux操作系统随每一个版本升级而变得更加稳定。

  以2003年12月进入开源世界的第一个2.6内核版本为例,与其前任2.4内核相比,它在很多方面进行了改进,如支持多处理器配置和64位计 算;它还支持实现高效率线程处理的本机POSIX线程库(NPTL)。实际上,性能、安全性和驱动程序的改进是整个2.6.x内核的关键。

  到2004年12月,即第一个2.6.x内核发布一年后,随着“Woozy Numbat” 2.6.10 Linux内核的推出,表明一年中已经发布了10个版本,听起来数量很多,但仍少于2.4.x内核发布头一年的数量。

  在2.4.0内核发布的2001年1月到这一年的12月间,共发布了这一内核的17个版本。不过,2.4.x系列中没有带有次小数点的版本号, 即没有四个数字组成的版本号,而在2.6.x系列中,从2.6.8.1内核开始,一直持续到2.6.11,较小的内核隐患和安全补丁被赋予了次小数点版本 号(例如2.6.11.1)。

  2005年2月发布的2.6.11内核开始支持InfiniBand。

  到2005年6月,Torvalds 用来帮助管理Linux内核开发的BitKeeper工具引发了一次影响很广的争论,并引发了一场开发工具的变化。2.6.12内核是第一个利用Torvald的Git程序取代BitKeeper的内核。

  2005年8月,2.6.x Linux内核中代码质量得到极大的改进。代码分析机构Coverity公司当时所做的一次调查发现,2004年 12月到2005年7月间,Linux内核中的“缺陷密度”下降了。虽然在此期间,Linux内核代码本身由2004年12月的576万行增加到了 2005年7月的603万行,但缺陷密度却下降了2.2%。2.6.13内核在2005年8月底亮相,包含“Kexec”。Kexec提供无需经过引导加 载程序(bootloader)的快速重新引导。它还包含Inotify文件系统事件监测机制,这种机制采用一种比其前任dnotify效率更高的 API。

  2.6.15内核是在2006年头几天发布的。对IPv6的支持在这个内核中有了很大的改进。PowerPC用户现在有了一个用于64位和32位PowerPC的泛型树(generic tree),它使这两种架构上的内核编辑成为可能。

  2.6.16版本引进了对Cell处理器和Oracle的 OCFS2集群文件系统的支持。2.6.16版还包含大量修补利用Coverity代码分析工具发现隐患的补丁。

  两个挑战

  2.6.x Linux内核目前面临着安全和法律上的挑战。

  在法律方面,Unix厂商SCO在一场复杂的诉讼中宣称Linux在一些方面侵犯了SCO的知识产权。

  Torvalds 率领的Linux社区在2004年5月采取了一系列行动,以更好地记录Linux内核的提交过程,其目标是帮助减少SCO或其他公司未来提出知识产权要求的可能。

  无论如何,这起宣称Linux内核中包含剽窃自SCO Unix代码的案例,清楚地表明企业对使用开源代码所怀有的一些担心。

  在安全方面,Linux开发人员继续在安全问题出现时迅速修补内核。不过,我们经常看到的现象是:在每一个三位数的版本正式发布不久后很快就推 出一个修补隐患或潜在安全问题的带有次小数点的四位数字的版本。例如,2.6.16.1版在2.6.16版发布一周后发布,它修补了一个潜在的安全漏洞。 而2.6.15内核仅仅在发布后两周就进行了修补,修补了3个潜在的安全漏洞。

  下一个内核

  2.6.17 Linux内核将引进对Sun 最新的T1处理器系列的支持。它包括驱动程序升级、性能改进以及漏洞修补补丁。

  Sun的UltraSPARC T1 处理器是在去年年底上市的。它包含多达8个处理内核,每个处理器内核支持4个线程,总共支持32个线程。

  来自kernel.org的正式2.6.17内核并不是第一个支持Sun的Niagara架构的Linux内核。5月底推出的Ubuntu “Dapper Drake”是第一种支持Niagara的主流Linux版本。

  新2.6.17内核使Linux可以更容易地处理断开/重新连接事件。Linux内核开发员Stefan Rompf解释说,2.6.17内核 将使用户空间(userspace)可以影响连接事件信号,这样DHCP客户程序可以得到连接终止的通知,因此客户程序可以尝试获得一个新IP地址。

  新内核还包含很多其他的新特性和支持,包括Linux VoIP H.323协议的iptable特性中对防火墙的支持。

  新内核中还增加了名为splice 的新I/O机制。Linus Torvalds解释说,splice背后的真正概念是暴露给用户空间的“随 机内核缓冲区”的概念。“也就是说,splice和tee运行在用户控制的内核缓冲区上,在这个缓冲区中,splice将来自任意文件描述符的数据传送到 缓冲区中(或从缓冲区传送到文件描述符),而tee将一个缓冲区中的数据复制到另一个缓冲区中。因此,从一个很真实(而抽象)的意义上讲,splice相 当于内核缓冲区的read/write,而tee相当于从内核缓冲区到另一个内核缓冲区的memcpy。”

  2.6.17内核能够满足业界的最新需求,而它也改进了对老技术的支持,例如对老DECnet协议的支持。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
共计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、付费专栏及课程。

余额充值