当前位置:Linux教程 - Linux - Linux 2.4的精彩世界(2)

Linux 2.4的精彩世界(2)

作者:Joe Pranevich 编译:Georgia

Linux 2.4和ia64(Itanium)

  在产品发布给期待以久的用户之前,Intel的64位处理器芯片就已经开始取代X86生产线了。在没有得到芯片以前,支持这些芯片以及它们后续芯片的补丁已经被包含在Linux的主流内核版本中了,Linux已经移植了一些对64位芯片(如康柏的Alpha和Sparc64)的支持。这些工作无疑使得Linux支持Intel64变的比较容易。


Linux的内部

  Linux 2.2是Linux 2.0和Linux 1.x基础上的重大突破。它支持许多新的文件系统,一个新的文件缓冲系统,并且是容易升级的(如果你需要了解Linux 2.2的新特性,你可以阅读我有关的文章)。Linux 2.4就是在这样的基础上建立起来的,几乎是可以运行在各种环境中最完美的内核。

  Linux的内核可以看作是各种模块和子系统的集合,这些模块和子系统包括驱动程序、协议以及其他部件。他们通过API和编程接口,粘合在内核周围,然后由API和编程接口提供调用内核的标准方法。本文的大部分篇幅将集中在Linux的这些部件上,因为大部分任务都是由这些部件完成的:驱动磁盘、读取文件和其他显然是物理性的工作。Linux 2.4还远不止这些,这些模块围绕在Linux内核的中心周围。这个中心结构的基本特征就是调度、内存管理、虚拟文件系统和资源分配。

  Linux 2.4是第一个具有全功能的资源管理子系统的Linux版本。我们现在熟悉的""即插即用""的功能在以前的Linux版本中被认为是很不支持或者仅仅有一点支持的痕迹。跟其他的内部变化不同,很多用户可以直接感受到这种变化--内核分配资源并报告的过程变得简单了。由于这个变化的缘故,在Linux 2.2里不能识别的PCI卡数据库又被重新启用,因此所有的资源可以有一个与之相关联的设备名,而胜于只是一个关联的驱动程序。

  Linux 2.4是第一个具有全功能的资源管理子系统的Linux版本。我们现在熟悉的""即插即用""的功能在以前的Linux版本中被认为是很不支持或者仅仅有一点支持的痕迹。跟其他的内部变化不同,很多用户可以直接感受到这种变化--内核分配资源并报告的过程变得简单了。由于这个变化的缘故,在Linux 2.2里不能识别的PCI卡数据库又被重新启用,因此所有的资源可以有一个与之相关联的设备名,而胜于只是一个关联的驱动程序。 新的Linux修正了一些VFS层(虚拟文件系统)的问题并对文件缓冲区做了修改。在旧版本的Linux中,文件缓冲独立于一个双缓冲区系统之上,这个系统简化了很多的问题,但是却使那些不得不保证缓冲区同步的程序员感到头痛。另外,冗余缓冲的使用加大了内存的开销,并且使系统不得不做额外的工作来保证这些缓冲的同步,减低了性能。Linux2.4用一个简单的单缓冲系统解决了这个问题。

  很多Linux 2.4的变化被称为是""企业级""的。这意味着这些加强系统整体的变化对于桌面系统的用户来说,不会立即体现出它们的效用。 在大多数情况下,这些附加的性能不会明显降低Linux在普通环境下的性能。首先,Linux 2.4可以通过升级到多处理器系统或者提供一个可配置的线程限制,处理更多的并发线程。其次,一个更新的更高效率的调度器处理更多的并发线程。第三,更新的Linux内核可以处理惊人数量的用户和组--大约42亿。另外,新的内核支持更多强大的硬件,如Intel的64G内存,16位的以太网卡,10个IDE控制器,多重IO-APICs,更多的其他硬件。2G的文件大小的限制也被突破了。这一切变化都表明,Linux可以胜任更多的环境。Linux管理共享内存的方法也更符合标准。这一系列的改变的一个重要的影响是Linux 2.4需要挂载特殊的""共享内存""文件系统以便使被共享的(POSIX型)内存段能够正常工作。SysV型共享内存则不需要其他文件系统就可以继续工作。这项工作应该在发行Linux 2.4版本时得到处理。

  Linux 2.4使改进后的共享内存的处理更加符合标准。改动后的副作用是,Linux 2.4必须加载一个特殊的“共享内存”文件系统才能使POSIX类型的共享内存片断正常工作。而SysV型共享内存则不需要另外的文件系统。该文件系统的加载需要Linux 2.4发行时提供。

  Linux内核的这个新版本中的另一个“老”变动是对VFS层的改进。以前的版本甚至是UNIX的每个版本,每次都只能加载一个文件系统,但Linux 2.4现在则允许任何文件系统加载多次,并使所有改动立即显示在其他加载点上。这对像/proc这样需要在ini trd中加载多次的文件系统是非常适用的。此外,它还允许统一加载,即同时包含多个文件系统的文件。

  以前的版本甚至是UNIX的每个版本,每次都只能加载一个文件系统,但Linux 2.4现在则允许任何文件系统加载多次。这对像/proc这样需要在ini trd中加载多次的文件系统是非常适用的。此外,它还允许统一加载,即同时包含多个文件系统的文件。 Linux 2.4还包括一个更大的驱动程序库,比以前的版本支持更多的硬件,几乎任何你叫得出名字的硬件都得到了支持(当然,我们建议你在出门购买新的硬件之前还是应该仔细阅读有关的文档,万一你要购买的硬件特殊而没有得到支持呢?)

  一个经常被提到的问题是Linux 2.4需要多少内存。很多操作系统似乎随着他们的成熟而需要越来越多的内存和资源。但是,Linux 2.4有力的遏制了这种趋势。在特定的环境下,Linux 2.4需要更少的内存。当然,Linux 2.4包含了比Linux 2.2更多的功能,而很多的新特性都需要资源。(但是请记住,与其他的操作系统不同,Linux的很多部件在编译时是可以关闭的。)

UNIX 设备 - /dev/*

  我们在讨论Linux 2.4的硬件支持之前,我不得不停下来关注Linux 2.4最近争议最多的功能部件:DevFS :the device filesystem(设备文件系统)。虽然目前该部件还是可选的,但在启用时,新的设备文件系统将对用户和程序与硬件和其他设备的交互产生两个重大的影响。其一,也是最明显的是,它将更改几乎所有""标准""设备的名称。Linux 2.4的/dev子目录下会有很多目录,分别对应于控制器或带有磁盘或设备的通用组。其二,设备节点不再由用户创建并存储在本地磁盘,而是由使用这些节点的驱动程序在装载时创建。这样不仅使/dev目录更清晰,而且还能使Linux使用不能识别所有UNIX语法的根文件系统(如DOS)。建议使用devfsd,它可以使旧类型的名称继续使用。

  但是对于高级用户来说,这个系统还是有缺点的。例如,在该系统中对设备名称进行自定义,或者进行非标准性的授权都是比较困难的。不过这些问题可以通过更改用户脚本来解决。