网络和协议
网络和网络硬件一直是Linux领先的主要领域之一。这些设备既不是"字符设备"也不是"块设备",而是不需要设备节点的特殊空间。Linux 2.4会包括非常多的对这一层的更新,新的驱动,BUG修补,加在现有驱动上的新功能。
网络套接字的Linux的模型是和UNIX标准相兼容的,但不幸的是,这一标准存在可修正的不足。Linux 2.2或者再早些的版本中,如果有很多进程都在等待网络插口的一个事件(例如,一个WEB服务器),它们会在事件探测到时全部被唤醒。所以,对于每一个WEB页的请求,Linux会唤醒大量试图接收请求的进程。而多个进程处理同一个请求是无意义的,只有一个应该得到数据;剩下的只有从回到睡眠状态。Linux按此方式在尽可能快处理这些事件时,仍然很有效率,但是如果能去掉多余的唤醒会得到更高的效率。Linux 2.4实现了"唤醒一个"的改进,在Linux下将会允许我们完全移除这一多进程的"惊跑效应"。总之,"唤醒一个"正如它的名字一样:只唤醒针对事件的那一个进程。这样可以使象Apache这样的应用程序更加有效率,使Linux更好的成为WEB服务器的选择。
Linux 2.4还包括完全重写过的网络层。实际上,它被作的尽可能不连续,使它可以比Linux的以前版本更好衡量。另外,整个子系统都被从新设计过,目标是能在多处理器上尽可能稳定的运行,还有很多可能的崩溃被消除了(这就是所谓的"软网"变化的一部分,它是最近才被整合的)。而且,它被优化了,可以和特定的网络协议槽配合,他们用于一些通用的操作系统里,包括Windows。在这里还有一点需要提一下,Linux仍然是唯一完全和IPv4定义一致的操作系统(是的,IPv4;我们一直在使用的)而且Linux 2.4有引以自豪的IPv4实现,它比它的前辈更容易升级。
作为这次主要重写的一部分,内核的防火墙和IP伪装功能已经被完全再次重写。(老用户也许记得这些部件同样的在Linux 2.2下大量的重写过。)新的子系统已经被分为了两个部分:一个包过滤层和一个网络地址翻译层(NAT)。这些新的子系统比起它们的前辈有相当好的普遍性,而且它现在可能在任何的Linux系统中实现各种复杂的路由(第三层)。以前,这些功能只有在复杂而且私有的路由硬件上才能实现。不幸的是,这个主要的重写仍然也包括另外的用户层的工具来达到可能的功能。为了兼容性,现有允许你使用Linux 2.0(ipfwadm)或者Linux 2.2(ipchains)工具的模块,而不会有大的功能损失。这就可以使从任何一个这种版本的内核相对无缝的升级。
Linux的网络堆栈中增加了ECN(显示阻塞通知)功能。瞬时来说,ECN可以让相应的路由器通知Linux某个路由堵塞,然后Linux对其作出响应,减少文件包传送的速度。长远来说,可以使Linux减少在堵塞路由上发送的文件包,从而减少信息包和中继站传送的时间和宽带。
对于企业级的用户,有很多特性使Linux更好的集成到现有网络架构的老式和新式组件中去。这方面的一个重要补充是Linux 2.4新特性,对DECNet和ARCNet协议和硬件的支持(部分)。这样允许更好的和专有系统交互,包括更老式的Digital/Compaq。考虑到某些用户的特殊兴趣,Linux 2.4 将对高速网络的ATM网络适配器提供支持。
对于低端的桌面系统用户,PPP是一个日常生活中的重要部分。Linux 2.4包括一些重要的重写和大量代码的模块化,包括等候已久的ISDN层的PPP层和串行设备PPP层的结合,例如用调制解调器拨号连接。除了模块化,ISDN已经能支持更多新卡了。PLIP层(使用并行口的PPP)也被改进了,使用新的并行口抽象层。最后,以太网的PPP(PPPoE,供一些DSL提供者使用)支持也被加入了内核。
尽管在Linux 2.4中还不支持NetBEUI协议,MS操作系统所使用的,但工作现在也开始了。虽然微软将把它移出产品而转向TCP/IP,这个协议对于很多基于Windows的网络环境来说仍然是重要的。(以前,内核开发者曾评论说在内核里支持协议是费事,容易产生臭虫的。既然一个实现已经露出了,剩下的是看是否它能足够的稳定,一直呆在正式的内核里。)
其他改进
程序加载器
程序加载器是Linux内核中经常被忽略的部分之一,它获取程序,正确的装载它并执行。很多人并不知道Linux 2.2添加了对其它二进制文件加载器的支持,这个灵活的模块化设计允许你将某种二进制文件类型(取决于文件扩展名或文件头信息)和特定的应用程序关联起来,就像Windows或兼容操作系统所做的那样。举个例子,你可以将机器中所有的Windows应用程序关联到WINE(Windows模拟器),当你输入"./notepad.exe"时,自动的使用WINE运行它(其实通常说来,在系统核心级别实现这项功能并不是个好主意,很多由窗口提供的关联功能最好留给文件管理器或桌面环境来处理。
比如说,为了图方便,而把/etc/passwd和文本编辑器关联起来就是个非常坏的主意。我个人认为,只有当文件类型是可执行的时候,才使用这项功能)。很多人认为这有很大的好处,使得许多组织,如WINE(Windows模拟器)和Dosemu(DOS模拟器)可以发布使它们的程序能够被核心直接运行的方法。
Linux 2.2和Linux 2.0提供内置支持,可以在Java应用程序执行时自动调用Java解释器(如果存在的话),这是第一个提供核心级支持的操作系统。Linux 2.4仍将支持自动加载Java解释器,但是去掉了特定的Java驱动程序,用户需要升级他们的设置来使用"Misc."驱动程序。
内核级Web后台进程
Linux 2.4内核最引人注目的功能是内核级Web后台进程--khttpd。千真万确,Linux真的可以不用调用任何用户级的服务器程序(如Apache),用一个内核模块就能够处理HTTP请求。这项功能经常会被人误解 -- 它不是用来替代Apache或其他web服务器软件的,它只能处理简单的网页(不能处理CGI),如果它接受到不能处理的请求时,会传递给用户级,web服务器软件不会感到任何不同,捕捉到并处理它。此功能将使Linux成为提供静态内容服务的快速防火墙的更好选择,如专门提供图像服务的服务器。
易用性
通常提起Linux的时候,不会把它跟"友好用户操作"相联系。所以如果说Linux 2.4(及Linux 2.2以后的某些版本)支持语音合成器卡,你一定会感到奇怪。这个驱动程序配合适当的硬件可以让用户听到Linux的所有输出,包括启动过程中的内核消息。很少有操作系统能够实现对设备的这种低层支持。(要完全实现这些设备的功能,还需安装其他的补丁和实用程序,该内核驱动程序只是系统的一个部件。)
文档
除了上述的许多功能上的改善,Linux 2.4还包括了一套更丰富的文档,这其中首次加入了DocBook文档格式,它类似于HTML,并被GNOME和其他GNU项目采用。
关于本文
本文的创作基于我(Joe Pranevich)的大量个人研究和许多Linux爱好者的建议。在保证全文完整的情况下,允许(甚至鼓励)复制和翻译本文。由于本文档会经常更新,如果你需要镜像链接以保证获得最新的版本,请给我发电子邮件。如果是印刷介质的复制,请先通知我 Linux 2.4 即将发行,本文档也已基本完成。如果对本文档有任何修改建议,请给我发电子邮件:jpranevich@linuxtoday.com。保留其他版权和商标权利。(本文章的中文版权由作者、译者和ChinaByte共同所有)