1.3.2 Linux内核版本的变化

自从1991917Linus Torvals正式宣布了 Linux的第一个正式版本—0.02版本,到现在,Linux的内核版本发生了一系列的变化,新旧版本之间的时间间隔是几个月甚至几个星期,关于这一变化的非常详细的资料请看站点:http://ps.cus.umist.ac.uk/~rhw/kernel.versions.html的内容。

我们把内核版本之间内容较大的变化分为三个阶段,第一阶段为0.020.99.15j,第二阶段为1.01.2.x,第三阶段为1.2.x2.x.x 。一般来说,一个软件要到理论上已经完备或者已经没有毛病时才给予1.0版本的版本号,而Linux2.0以后的版本比起1.2.x版本有了较大幅度的变化,请看站点http://www.linuxhq.com/的内容。

Linux诞生开始,Linux内核就从来没有停止过升级,从Linus第一次发布的0.02版本到1999年具有里程碑意义的2.2版本,一直到我们现在看到的2.4版本,都凝聚了Linux内核开发人员大量辛苦的劳动。目前Linux在各种工作平台上,包括企业服务器和个人电脑上的广泛应用,使得Linux成为了Windows的强劲对手。

本书所分析的Linux内核版本是2.4版的2.4.16版。那么Linux2.4版具有什么样的特点呢,我们可以用四个字来概括,那就是“广、新、快、小”。

1.广泛的支持

·      处理器芯片的广泛支持Linux 2.4 提供了大量的处理器芯片的支持。原先的Linux就可以支持多种处理器体系结构,如Intel x86Motorola/IBM PowerPCCompaq(DEC)Alpha等等,现在还增加了对IA 64S/390SuperH3种体系结构的处理器的支持。对Intelx86系列来说,AMDCyrix公司的系列处理器产品也是使用x86指令的,同样也能获得很好的支持。

 

·      ISA 即插即用设备的支持: 过去在Linux核心开发小组里面存在有两种不同的观点,一种是支持对ISA即插即用,另外一种持反对意见,认为对即插即用的支持简直是多余的。因此过去在Linux里对即插即用设置的通用做法只能是利用用户级的工具(如isapnp tools),手动配置即插即用设备。现在的内核则有所不同了,在内核级实现了对即插即用的管理。我们可以看到系统会在启动的时候自动完成对即插即用设备的检测和自动配置,比如说,我们可以从一个即插即用的IDE控制器上启动系统。

 

·      广泛的文件系统支持:很少有一个操作系统能支持这么多种文件系统。Linux使用的是VFS(虚拟文件系统)的技术,提供了对多种文件系统的支持。从Linux 1.xLinux 2.2Linux已经可以支持多种文件系统了。如Windows 9xVFATDOSFATMac OSHFSOS/2HPFSWindows NTNTFSNTFS的支持还处于测试阶段)等等;当然还包括Linux自己使用的高性能的Ext2文件系统。新版本的Linux新增支持现在的DVD使用的UDF文件系统和SGIIRIX系统上的XFS文件系统。

 

Windows里面使用SMB协议来实现“网上邻居”的共享访问,Linux 2.4的内核里会让您自己选择是否从Windows 98/NT下装载驱动器,还可以自动检测远端的系统类型,使得您的LinuxWindows环境的局域网里工作得更好。

 

NFS(网络文件系统)来说,Linux 2.4版本支持最近发布的NFS v3版本的网络文件系统。

 

·      对软猫的支持:软猫实际上被人称为WinModem,就是因为现有的这种软猫的驱动都是由为Windows开发的软件来完成的。这种Modem和一般Modem的处理方法不同,它的DSP处理并不是在硬件层次上做的,而是使用软件通过CPU实现的,因此无法在现有的Linux中配置这种Modem上网。现在的Linux内核里已经开始了这方面的支持。

2.新思路

·      新型的设备管理方法Linux 2.4 引入了I2OIntelligent Input/Output)的设备驱动管理方法。它的做法是,将驱动程序分成了两个部分:一个是在操作系统模块的部分,另外一个是在硬件模块的部分。操作系统模块的部分是独立的,硬件模块的部分是依赖于硬件结构的。这种新型的管理方法使得Linux 2.4可以更好地支持大部分的ISAPCI设备。

 

·      USB总线的支持:近年来,USB(通用串口总线)的技术是计算机界振奋人心的事情之一,现在已经出现了大量的使用这种接口的设备,如键盘、鼠标、音箱、Modem等等。使用USB接口使得计算机外设的安装和使用变得更为简单,自然成为了一种潮流。现在的Linux 也可以很好地支持这种总线接口的设备。

 

·      新型的二进制执行代码类型(Binary Types)Linux是第一个在内核级提供内建Java解释器的支持,从而进行Java代码的执行的操作系统之一。这在Linux 2.2版本里已经实现了。Linux 2.4版本又做了改进,将这种支持的方法改为对“Misc”二进制类型的支持。通过使用这种类型的二进制代码类型,用户甚至可以利用DOSEMUMS DOS模拟器)或者WINEMS Windows模拟器)来运行在DOS/Windows下的.exe.com的程序。同样用户也可以自己配置出Java字节码运行类型。

 

·      内核级Web服务器:这种Web服务器和我们所谓的Apache用户层上的Web服务器并不冲突。对HTTP请求首先由内核级Web服务器进行处理,如果不能处理就将请求提交给Apache用户级Web服务器来处理。像这样的构思和实现在网络操作系统中实属一绝。

3.高性能 

·      对虚拟文件系统(VFS)的修改:Linux 2.4版本的文件系统修改了VFS中的错误,尤其是在文件的缓存管理上。过去的文件系统的高速缓存管理是建立在复杂的双缓冲池(dual-buffer pool) 上的,这种方法导致连开发人员都不知道什么时候将双缓冲池进行同步。这种处理方法并没有给文件处理带来好处,反而增加了内存的使用。因为要处理双缓冲系统 的同步,使得系统的处理速度降低。现在开发人员修改这段代码,使用了简单有效的单缓冲系统,提高了文件系统的处理效率。

 

·      对高端服务器的支持:Linux 2.4版本的内核可以支持在SMP(对称多处理器系统)下的多个IO-APIC(输入输出的高级可编程中断控制器),提高了对高端服务器的支持效率。

 

Linux 2.4版本可以支持多达10IDE控制器。过去的Linux版本只能支持最多4ID    控制器。一些强大的企业级Web服务器正需要这样的硬件支持。

 

Linux 2.4版本可以支持Intel P6以上芯片的MTRR(内存类型范围寄存器),对非Intel的如Cyrix 6x866x86MXMIIARR(地址范围寄存器)也能有很好的支持,这使一些高带宽的设备的运行性能得到提高。

 

现在的内核可以支持多达42亿个用户。在Intel架构上可以支持到多达4GB的内存。并且现在的内核还可以支持多达16块以太网卡,同时支持最大容量为2GB的文件。

 

这些性能都使得Linux对高端设备的支持能力得到提高。

 

·      对高速网的支持:Linux 2.4版本支持ATM网络适配器等高速网络设备,为进一步的网络发展做好了准备。对低端用户来说,Linux提供的PPP层和ISDN层的结合,提供了在并口线上的PPP和在以太网上的PPP支持。

4.小内核

·      内核本来就很小:Linux的整个内核源代码大概需要占用20MB的硬盘空间,但是编译出来的二进制代码只占用600KB左右的空间,完全可以放在一张软盘上,随时可以使用这张软盘将系统启动。

 

·      对内存的需求很小:大家比较关心的一个问题是Linux现在需要多少内存才能正常工作。因为我们知道,大部分的操作系统在升级的同时,对硬件的需求也在不断提高,尤其是对内存的需求方面,很大层次上影响了系统的性能。不过Linux和其他操作系统不同,Linux可以进行个性化的定制,用户完全可以根据自己的系统配置来生成自己需要的操作系统内核,也可以根据需要启动或关闭一些系统服务,这样可以减少系统对资源的占用,提高系统的运行效率。

 

Linux内核发展到现在已经相当庞大,要想在一段时间内搞清所有的内容几乎不可能,因此,本书对内核的分析也集中在几个主要部分的主要内容上,其运行的平台也只选择了i386的单CPU,在一些特殊情况下,我们也会讨论SMP(对称多处理机)的情况。

走进Linux不是一件容易的事,但走出来同样不容易。阅读Linux源代码如同你阅读一篇优美的作品,她会深深地吸引着你,既可以满足你好奇的愿望,也可以检验你挑战困难的勇气。