《Linux内核修炼之道》 之 高效学习Linux内核(3)

当然,这点儿代码是相当复杂的,单单从代码量上来说,早已经突破了千万级。从结构上来说,也早就不是一个人穷自己一己之力就能够全部理解的了。所以,现在强调第二句话:学内核切忌求大求全,选择一点研究的足够深入就很不容易了。

下面介绍介绍 kernel 的年龄, kernel 又不是一个怀春的少女,所以它的年龄并不需要保密,从 1991 年诞生开始,在去年刚刚举行了它自己的成人礼,进入了成熟发展期。

就像我们人有自己的青春期、中年期等一样, kernel 相应的也有很多不同的版本号,不过不同的是,我们的青春期一去就不复返了, kernel 不同的版本号却是共存的。

很多年以来,内核的版本都是以 X.Y.Z 这 3 个数字的形式分配的,中间的偶数 Y 代表稳定版,奇数 Y 代表了不稳定的开发版。所谓的稳定版本是指内核的特性都已经固定,代码运行稳定可靠,不会再增加新的特性,要改进也只是修改代码中的错误。而不稳定版本是指相对于上一个稳定版本增加了新的特性,还处于发展之中,代码的运行不大可靠。

对于目前来说, 2.6 内核的发布已经持续了很长时间,那么什么时候将会推出 2.7 ? Linus 本人的回答是,不会有 2.7 ,他不会再遵循旧的模式,新采用的模式会更好,不值得重复过去。他表示正在考虑新的编号方式,一种基于时间的版本号。比如用 2008.7 取代 2.6.26 ,中间第二个数字代表年, 2008 年就是 2.8 , 2009 年的第一个版本就是 2.9.1 ,之后 2010 年是 3.0 ,等等。

最后不得不提到是那些眼花缭乱的发行版,内核与发行版的关系就类似那种双生花,彼此互相依赖互相扶持共同成长。没有那些发行版,内核就只能是束之高阁的一个貌似好看的玩具,并不能真正的走进我们的工作生活,而没有内核,那些发行版就缺少了存在的地基,就只能是个豆腐渣工程。

《Linux内核修炼之道》 之 高效学习Linux内核

现在我们了解了内核这个朋友的外表,这个时候我们不能像非诚勿扰中的那些拜金女一样只关心外在的信息,我们还要接着了解内核的内涵,也就是内核的体系结构以及内核是如何工作的。

首先看第一张图,它向我们传递了这样的信息 —— 内核将应用程序和硬件分离开来。内核一方面负责与计算机硬件进行交互,实现对硬件的控制,调度对硬件资源的访问,另一方面为用户应用程序提供一个高级的执行环境和访问硬件的虚拟接口。

提供硬件的兼容性是内核的设计目标之一,几乎所有的硬件,只要不是为其他操作系统所定制的,都可以得到 Linux 的支持。

与硬件兼容性相关的是可移植性,也就是在不同的硬件平台上运行 Linux 的能力。从最初只支持标准 IBM 兼容机上的 Intel X86 架构到现在可以支持 ARM 、 MIPS 、 PowerPC 等几乎所有硬件平台,如此广泛的平台支持之所以能够成功,部分原因在于,内核清晰地划分为了体系相关部分和体系无关部分。因此也就有了第二张图。

体系无关部分通常会定义与体系相关部分的接口,这样,内核向新的体系结构移植的过程就变成确认这些接口的特性并将它们加以实现的过程。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwfssp.html