日期:2014-05-16  浏览次数:20786 次

Linux 内核剖析

由于本文的目标是对 Linux 内核进行介绍并探索其体系结构和主要组件,因此首先回顾一下 Linux 的简短历史,然后从较高的层次审视 Linux 内核的体系结构,最后介绍它的主要子系统。Linux 内核具有超过 600 万行的代码,因此本文不可能进行完整的介绍。请使用指向其他内容的链接进一步学习。

Linux 的简短历史

Linux 还是 GNU/Linux?
您可能已经注意到 Linux 作为一个操作系统来说,有时会称为 “Linux”,有时却称为 “GNU/Linux”。这背后的原因在于 Linux 实际上是操作系统的内核。使这个操作系统变得非常有用的大量应用程序是?GNU 软件。例如,窗口系统、编译器、各种 shell、开发工具、编辑器、实用工具以及内核之外的其他应用程序,其中很多都是 GNU 软件。由于这个原因,很多人都认为 “GNU/Linux” 更适合作为操作系统的名字,而 “Linux” 则适合作为内核的名字。

尽管 Linux 绝对是最流行的开源操作系统,但是相对于其他操作系统的漫长历史来说,Linux 的历史非常短暂。在计算机出现早期,程序员是使用硬件语言在裸硬件上进行开发的。缺少操作系统就意味着在某个时间只有一个应用程序(和一个用户)可以使用这些庞大而又昂贵的设备。早期的操作系统是在 20 世纪 50 年代开发的,用来提供简单的开发体验。包括为 IBM 701 开发的 General Motors Operating System(GMOS)和 North American Aviation 为 IBM 709 开发的 FORTRAN Monitor System(FMS)。

在 20 世纪 60 年代,MIT(Massachusetts Institute of Technology)和一些公司为 GE-645 开发了一个名为 Multics(Multiplexed Information and Computing Service)的实验性的操作系统。这个操作系统的开发者之一 AT&T 后来退出了 Multics,并在 1970 年开发了自己的名为 Unics 的操作系统。与这个操作系统一同诞生的是 C 语言,C 语言就是为此而开发的,然后它们使用 C 语言对操作系统进行了重写,使操作系统开发具有可移植性。

二十年后,Andrew Tanenbaum 创建了一个微内核版本的 UNIX?,名为 MINIX(代表 minimal UNIX),它可以在小型的个人计算机上运行。这个开源操作系统在 20 世纪 90 年代激发了 Linus Torvalds 开发 Linux 的灵感(请参看图 1 所示)。


图 1. 主要 Linux 内核发行版简史
主要 Linux 内核发行版简史?

Linux 快速从一个个人项目进化成为一个全球数千人参与的开发项目。对于 Linux 来说,最为重要的决策之一是采用 GPL(GNU General Public License)。在 GPL 保护之下,Linux 内核可以防止商业使用,并且它还从 GNU 项目(Richard Stallman 开发,其源代码要比 Linux 内核大得多)的用户空间开发受益。这允许使用一些非常有用的应用程序,例如 GCC(GNU Compiler Collection)和各种 shell 支持。





回页首


Linux 内核简介

现在让我们从一个比较高的高度来审视一下 GNU/Linux 操作系统的体系结构。您可以从两个层次上来考虑操作系统,如图 2 所示。


图 2. GNU/Linux 操作系统的基本体系结构
 GNU/Linux 操作系统的基本体系结构?
系统调用接口(SCI)的方法
实际上,体系结构可能并不像图 2 所示的一样清晰。例