要点:Linux 2.4
每隔一段时间,总会发生一些令人叹为观止、绝对惊人的事情,从而改变世界。Linux 2.4 的发布可能不会是这些重大事件之一,但它无疑是 Linux 发展历程中的一个重要事件。Linux 2.4 标志着在 Linus 的快速发布计划下发布的第一个内核,该计划发布更多内核,但每个内核的新功能较少,以便这些新功能可以更快地到达最终用户手中。Linux 2.4 还包括许多从 Linux 2.2 遗留下来的“零散问题”,包括许多使其对普通桌面用户更有用的功能。
我将尝试概述我认为新内核中一些最重要、最具革命性或最值得报道的功能。您的意见可能与我不同,但请不要对我过于苛刻。
通用串行总线 (USB) 是 2.2 版本中最受欢迎但未实现的功能之一,Linux 2.4 最终将包含对通用串行总线 (USB) 的支持。USB 是一种外部设备架构,在声卡、键盘、调制解调器和打印机等设备中变得越来越普遍。这种类型的设备在 PC (i386) 和 Macintosh 电脑中都很流行。iMac 几乎完全使用 USB。
目前,尚不清楚 2.4 版本对 USB 的支持程度如何。普遍预计大多数集线器、键盘、鼠标和声卡(扬声器)都能正常工作。在发布之前,可能会将对许多其他设备的支持添加到内核中。由于我写这篇文章时距离您实际看到它还有几个月的时间,因此当您阅读本文时,情况可能已经发生了变化。
许多人认为,USB 支持是 Linux 在 21 世纪作为桌面平台取得成功的最大障碍之一。虽然目前世界上许多 USB 端口都未被使用,但适用于此架构的硬件数量却在与日俱增。迟早,“普通”桌面将需要在操作系统中提供 USB 支持。
Linux 世界长期以来缺乏的另一个功能是 ISA PnP,即 Windows 世界采用的总线规范,旨在为不智能的总线架构 (ISA) 带来智能。通过用户空间配置实用程序和使用外部模块驱动程序,即插即用几乎一直可在 Linux 下使用。通过将 PnP 添加到内核中,内核可以显式自动检测这些设备并自动配置其资源。不再需要摆弄不必要的配置文件或模块配置。当您安装新卡时,不再需要手动更新 modules.conf。当然,您的设备顺序可能仍然会改变。
Linux 开发人员是如何做到的?Linux 2.4 还包含一个完全重写的资源分配系统,该系统允许比以前更轻松地管理设备资源。它还允许 Linux 管理尚未加载驱动程序的设备的资源,以防止意外错误配置设备——这只是许多“微小”更改之一,这些更改使重大更改变得更加容易。
很明显,ISA PnP 将最有利于 Linux 在桌面领域的应用。最终,轻松支持世界上更大比例的现有硬件将成为可能。基于 Linux 2.4 的系统在这方面将变得更智能、更简单。
等等!我的 Linux 发行版已经支持 PCMCIA 卡很长时间了!这不是新功能……
实际上,多年来,各种发行版一直在发布 Linux 变体,其中 PCMCIA 支持由外部开发人员提供。由于各种原因,他选择不将他的代码合并到主流内核中,而是留给发行版来解决这些问题。这为已经很复杂的系统增加了复杂性,并且或多或少地确保了没有发行版可以真正使用“stock” Linux 内核进行发布。更不用说实际合并和编译补丁所涉及的麻烦了。
从 Linux 2.4 开始,这种情况将会改变。虽然您仍然需要一个外部软件包来处理卡操作和其他问题,但内核现在提供了对 PCMCIA 设备和总线本身的支持。这将在某些方面为发行版创造公平的竞争环境,并使我们这些从不使用发行版预编译内核的人更容易使用 PC 卡。我正在一台笔记本电脑上写这篇文章,在这台笔记本电脑上,我从未设法为非 Red Hat 内核获得可用的 PCMCIA 驱动程序;Linux 2.4 对我来说将是天堂——不再需要启动到 Windows 来发送文章。(当然,这可能只是我的愚蠢。)
凭借此功能,Linux 为桌面用户和移动 Linux 用户又得一分。简而言之,移动 Linux 更加实用。任何使 Linux 更实用的功能都是我喜欢的功能。
Linux 的这些重大变化都对桌面用户非常有利,但 Linux 2.4 也将为那些使用更传统的 Linux(服务器)的用户带来许多优势。最受媒体关注的变化是唤醒一个。
从本质上讲,唤醒一个是旨在抵消繁忙 Web 服务器上在某些条件下出现的“踩踏效应”的简单更改。以前,当许多守护程序或其他进程正在等待通过网络发生某些事情时,它们都会处于空闲状态,然后在第一次通信信号时全部立即开始活动。不幸的是,对于每个 Web 连接,只能有一个守护程序可以对话,因此大多数守护程序都失败了,然后又回到等待并希望它们是下一个。Linux 2.4 集成了更改,这些更改基本上唤醒其中一个进程而不是所有进程。这减少了守护进程不必要的抖动,并提高了系统的整体速度。
简单?也许。为了支持这一点,Linux 2.4 需要完全重写等待队列和其他部分。除了解决这个问题之外,Linux 2.4 队列将更加健壮,并且可以更好地扩展到多个处理器。为了了解 Linus 认为此更改对 Linux 有多重要,应该注意的是,这是 Linux 2.3(开发版本,将成为 Linux 2.4)中的第一个新功能。
在服务器方面,Linux 2.4 还包括对一个相当革命性的想法的支持:一个实际集成到内核中的 Web 服务器。其优势包括更快的服务器响应时间,因为它可以直接在缓存层工作,而无需向用户空间发出任何网络调用。但是,此更改并非旨在作为 Web 托管的通用解决方案;它只能服务于文件,而不能服务于 CGI,并且它被设计得尽可能简单。任何它无法处理的请求都可以传递给用户空间,Apache 或另一个等待的 Web 守护程序可以在用户空间中捕获并服务于它。已经观察到这种双层 Web 托管风格在合成负载环境中提高了服务器性能。
许多 Linux 用户实际上公开反对这项功能,理由是内核不是 Web 服务器的场所。我个人的感觉是,以这种方式服务文件与任何其他内核文件服务器没有什么不同,并且在性能是真正的“关键”问题并且可以确保简单性的情况下,它实际上是有意义的。目前,只有 knfsd 实际上从内核提供文件服务,但先例已经存在。我不认为我们应该例如从内核提供 FTP 或将 DNS 服务器集成到内核中,但是如果以这种方式做事有很好的优势,那么它应该是一个选项。
Linux 2.4 将支持的另一个服务器功能是所谓的“原始”设备。原始设备是特殊的设备节点,可以与普通块设备关联,以提供对设备的直接和低级访问。例如,数据库可以使用它,因为它们认为自己可以比内核更好地处理自己的缓存。关于此功能实际上有多有用,而不是其支持者所说的有多有用,目前尚无定论,但这无疑是朝着在 Linux 下提供“商业级”UNIX 功能迈出的又一大步。
长期以来,数据库开发人员和其他习惯于其他 UNIX 系统的原始功能来开发服务器应用程序的人员一直要求此功能。除了数据完整性至关重要且不考虑性能损失的情况外,我看不到绕过缓存的太多必要性。但也许这个功能只是不适合我,并且对于特定类型的应用程序来说是完全有意义的。
正如 Windows 和 Macintosh 电脑有自己的协议和方法来访问共享驱动器一样,UNIX 系统也有 NFS,即网络文件系统。长期以来,Linux 一直支持所有风格的 NFS 共享和挂载。Linux 甚至可以(在没有 initrd 的情况下)从这样的共享驱动器启动。Linux 2.4 添加了经常被要求的对最新版本的 NFS 协议 NFSv3 的支持,其中包括对旧系统的许多改进,并确保 Linux 将与下一个千年的商业 UNIX 系统兼容。
我相信服务器和桌面用户都将从此更改中受益。拥有一个更强大的 NFS 层来支持最新的协议和增强功能始终是一件好事,并且许多共享文件的桌面用户可能能够利用新 NFS 中的新功能。
虽然许多用户可能没有注意到,但 Linux 2.4 包括对并行端口系统的完全重写(再次)。与 2.2 一样,Linux 2.4 包括对并行端口设备(包括打印机和磁盘驱动器)的模块化支持。此外,Linux 2.4 还包括“通用”支持,这将使更轻松地支持并行端口扫描仪和其他设备成为可能。Linux 2.4 还将支持更多并行端口,包括需要 DMA 的端口。许多现有系统默认情况下在 BIOS 中禁用了 DMA;但是,可以重新启用它。此外,Linux 2.4 支持使用并行端口作为控制台。此功能允许一些 Linux 用户使用打印机作为调试工具或保留控制台输出的硬拷贝记录。
这就是我对 Linux 2.4 的“前 8 个”要点的总结。对于每个新版本的 Linux 内核,哪些功能或添加是最重要的,意见差异很大,您可能有一个此处未提及的喜爱功能。Linux 2.4 是在通往被广泛市场接受和有用的道路上的又一个伟大里程碑,我确信我们将很快再次就 Linux 2.6 的“最重要功能”展开辩论。在那之前——祝您黑客愉快。
Joseph Pranevich (jpranevich@lycos.com) 是一位狂热的 Linux 爱好者,在不为 Lycos 工作时,他喜欢各种写作和参与许多开源项目。