红联Linux门户
Linux帮助

介绍Linux内核

发布时间:2006-10-02 21:14:31来源:红联作者:Temoc
而内核是 ... Linux!

通常,“Linux”一词指的是完整的 Linux 分发版(distribution)和使分发版工作的所有协作运行程序。然而,您或许会惊奇地发现从技术角度讲 Linux 是并且只是一个内核。尽管一般所指的“Linux”的其它部分(如 shell 和编译器)是完整的操作环境的基本组成部分,但从技术角度讲,这些部分与 Linux(内核)是分开的。尽管如此,人们仍用“Linux”来指“基于 Linux 的分发版”。不过,至少每个人都认同 Linux 内核是所有“Linux 操作系统”的心脏。
文章评论

共有 13 条评论

  1. 风信子 于 2006-10-24 21:03:05发表:

    :0L

  2. 202.101.213.* 于 2006-10-17 22:55:35发表:

    temoc 你好
    只是好奇你的名字
    有空可以加QQ454389596

  3. zju136 于 2006-10-10 23:19:15发表:

    这么短的文章集中于一个帖子比较好

  4. grape11213 于 2006-10-10 14:43:02发表:

    强!

  5. Temoc 于 2006-10-02 21:19:35发表:

    模块 -- 并非用于所有进程!

    值得一提的是:不能将所有东西都放入模块中。因为模块存储于磁盘上,可引导的内核映象需要拥有对磁盘控制器、驱动器和根文件系统的内编译(compiled-in)支持。如果没有将这些基本组件编译到内核映象中 -- 也就是说,如果试图将它们作为模块编译 -- 那么内核将没有从磁盘装入这些模块所必需的能力,这会产生一个很令人讨厌的“先有鸡还是先有蛋”的问题,结果是一个不能引导系统的内核!

  6. Temoc 于 2006-10-02 21:19:13发表:

    模块所在位置

    内核模块通常位于 /lib/modules/x.y.z(其中 x.y.z 是模块所兼容的内核版本);每个模块在其名称末尾都有“.o”,表明它是包含机器指令的二进制文件。正如您猜想的那样,每个单独的模块代表内核功能的一个特殊组件。某个模块可能提供 FAT 文件系统支持,而另一个模块则可能支持一块特殊的 ISA 以太网卡。

  7. Temoc 于 2006-10-02 21:18:52发表:

    介绍 ... 模块!

    所有较新的 Linux 内核都支持内核模块。内核模块是真正美妙的事物 -- 它们是内核的组成部分,驻留在磁盘上相对较小的二进制文件中。每当内核需要一个特定模块的功能时,就会从磁盘装入这个特定模块并自动将它与自身结合,这样便动态扩展了内核的能力。

    如果装入的内核模块的特性在几分钟内未被使用,则内核会自动将它与内核其余部分分离并从内存卸装它 -- 这被称为自动清除(autocleaning)。若没有内核模块,则需要确保运行的内核(作为单个二进制文件存在于磁盘上)完全包含所有可能需要的功能。若没有模块,则需要构建一个全新内核,以将新的重要功能添加到其中。

    通常,用户构建一个包含所有基本功能的内核映象,然后再构建一组模块,这些模块对应着用户未来可能需要的功能。以后要使用时,则按照需要,将适当的模块装入内核。这也有助于节约 RAM,因为模块只有从磁盘装入后才使用 RAM。当从内核除去模块后,其使用的内存就被释放并用于其它用途。

  8. Temoc 于 2006-10-02 21:18:30发表:

    引导回顾

    现在是快速复习 Linux 引导过程的良好时机。启动基于 Linux 的系统时,内核映象(以单个二进制文件形式存储)由引导装入程序(如 LILO 或 GRUB)从磁盘装入内存。此时,内核接管系统。内核首先做的事情之一是检测并初始化所有它找到且配置成支持的硬件。硬件正确初始化之后,内核就准备启动常规用户空间程序(也称为“进程”)。

    由内核运行的第一个进程是 /sbin/init。它依次启动 /etc/inittab 中指定的其它进程。几秒钟内,Linux 系统就启动并运行起来,准备好供您使用。虽然您从不直接与内核打交道,但 Linux 内核始终运行于所有常规进程“之上”,并提供各种程序和库运行所必需的虚拟与抽象。

  9. Temoc 于 2006-10-02 21:18:10发表:

    联网的优点

    Linux 的优点之一是内核中有大量可用的可选特性,特别是与联网有关的特性。例如,可以将内核配置为允许整个内部网络经过 Linux 调制解调器访问因特网 -- 这称为 IP 伪装(IP Masquerading)或 IP NAT。

    此外,可以将 Linux 内核配置为导出或挂装基于网络的 NFS 文件系统,这是考虑到允许 LAN 上其它 UNIX 机器可以轻松地与 Linux 系统共享数据。内核中有许多好东西,一旦开始研究 Linux 内核的众多配置选项,您就会了解。

  10. Temoc 于 2006-10-02 21:17:49发表:

    以网络为中心

    Linux 赢得声誉的主要因素之一是其健壮的联网功能,尤其是 TCP/IP 支持。如果您猜想 TCP/IP 栈在 Linux 内核中,那么您猜对了!内核为在网络上发送数据的程序提供了符合标准的高层次接口。在幕后,Linux 内核直接与特定的以太网卡或 pppd 守护程序进行相互操作,并处理低层次的因特网通信详细信息。请注意:本系列的下一篇教程(第 7 部分)将讨论 TCP/IP 和联网。

  11. Temoc 于 2006-10-02 21:15:35发表:

    抽象 IO

    内核还处理大量需要的任务:抽象所有文件输入输出格式。设想一下,如果每个程序都必须直接与特定的磁盘硬件打交道,会发生什么 -- 如果您更换磁盘控制器,所有的程序都会停止运行!幸运的是,Linux 内核遵循 UNIX 模型:提供所有程序都可以使用的简单数据存储和访问抽象。这样的话,您喜欢的数据库就不需要考虑数据是存储在 IDE 硬盘上、还是存储在 SCSI RAID 阵列上或是存储在挂装于网络的文件系统上。

    [ 本帖最后由 Temoc 于 2006-10-2 21:17 编辑 ]

  12. Temoc 于 2006-10-02 21:15:12发表:

    CPU 抽象

    Linux 内核还在系统的处理器(或多处理器)之上提供一个抽象层次 -- 使多个程序看起来象是同时运行。内核负责使每个进程公平、分时共享处理器的计算资源。

    若正在运行 Linux,那么正在使用的内核不是支持 UP(单处理器)的,就是支持 SMP(对称多处理器)的。如果您正好有一块 SMP 主板,但使用的是 UP 内核,那么 Linux 将不会“看见”额外的处理器!修正这一问题需要编译用于您硬件的特殊 SMP 内核。目前,SMP 内核也可运行在单处理器系统上,但性能略有下降。

  13. Temoc 于 2006-10-02 21:14:52发表:

    与硬件进行相互操作

    Linux 内核的主要作用是直接与系统中的硬件进行相互操作。内核在原始硬件与应用程序之间提供了一个抽象层。例如,按此方式,程序本身无需知道特定主板芯片组或磁盘控制器的详细信息 -- 而是可以在向磁盘读写文件的更高层次上进行操作。