Menu Close

Linux内核的特征及 Linux内核版本的变化

Linux是个人计算机和工作站上的Unix操作系统。但是,它绝不是简化的Unix。相反,Linux是强有力和具有创新意义的Unix类操作系统。它不仅继承了Unix的特征,而且在许多方面超过了Unix。作为Unix类操作系统,Linux内核具有下列基本特征:

  1. Linux内核的组织形式为整体式结构。也就是说整个Linux内 核由很多过程组成,每个过程可以独立编译,然后用连接程序将其连接在一起成为一个单独的目标程序。从信息隐藏的观点看,她没有任何程度的隐藏—每个过程都 对其它过程可见。这种结构的最大特点是内部结构简单,子系统间易于访问,因此内核的工作效率较高。另外,基于过程的结构也有助于不同的人参与不同过程的开 发,从这个角度来说,Linux内核又是开放式的结构,她允许任何人对其进行修正、改进和完善。
  1. Linux的进程调度方式简单而有效。可以说Linux在追求效率方面孜孜不倦,体现在调度方式上也是别具一格。对于用户进程,Linux采用简单的动态优先级调度方式;对于内核中的例程(如设备驱动程序、中断服务程序等)则采用了一种独特的机制—软中断机制,这种机制保证了内核例程的高效运行。
  1. Linux支持内核线程(或称守护进程)。内核线程是在后台运行而又无终端或登录shell和它结合在一起的进程。有许多标准的内核线程,其中有一些周期地运行来完成特定的任务(swapd),而其余一些则连续地运行,等待处理某些特定的事件(inetdlpd)。内核线程可以说是用户进程,但和一般的用户进程又有不同,它内核一样不被换出,因此运行效率较高。
  1. Linux支持多种平台的虚拟内存管理。内存管理是和硬件平台密切相关的部分,为了支持不同的硬件平台而又保证虚拟存储管理技术的通用性,Linux的虚拟内存管理为不同的硬件平台提供了统一的接口,因此把Linux内核移植到一个新的硬件平台并不是一件很困难的事。
  1. Linux内核另一个独具特色的部分是虚拟文件系统(VFS)。虚拟文件系统不仅为多种逻辑文件系统(ext2,fat)提供了统一的接口,而且为各种硬件设备(作为一种特殊文件)也提供了统一接口。
  1. Linux的模块机制使得内核保持独立而又易于扩充。模块机制可以使内核很容易地增加一个新的模块(如一个新的设备驱动程序),而无需重新编译内核;同时,模块机制还可以把一个模块按需添加到内核或从内核中卸下,这使得我们可以按需要定制自己的内核。
  1. 增加系统调用以满足你特殊的需求。一般来说,系统调用是操作系统的设计者提供给用户使用内核功能的接口,但Linux开放的源代码也允许你设计自己的系统调用,然后把它加入到内核。
  1. 网络部分面向对象的设计思想使得Linux内核支持多种协议、多种网卡驱动程序变得容易。

 Linux内核版本的变化

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

Linux内核的整体架构
Linux内核的整体架构

Linux内核

我们把内核版本之间内容较大的变化分为三个阶段,第一阶段为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的强劲对手。

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 6×866x86MXMIIARR(地址范围寄存器)也能有很好的支持,这使一些高带宽的设备的运行性能得到提高。

现在的内核可以支持多达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源代码如同你阅读一篇优美的作品,她会深深地吸引着你,既可以满足你好奇的愿望,也可以检验你挑战困难的勇气。

 

除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Leave the field below empty!

Posted in Linux内核

Related Posts