Berkeley Software Distribution (BSD) 系列操作系统的历史向前可以追溯到 20 世纪 70 年代后期由加利福尼亚大学 Berkeley 创建和维护的 BSD UNIX 操作系统。今天,BSD 系列包括 5 个主要分支,就是那些热衷于 Linux 的激进主义者也会惊叹于不断涌现的各种 BSD 分支。自 2001 年起,当最后一个主要分支 DragonFly BSD 发布时,FreeBSD、OpenBSD、NetBSD 和 Mac OS X 代表了 UNIX 世界一次新的创新浪潮。所有这些操作系统分支都符合 POSIX,都为它们的用户呈现了一个类似的命令行界面,并且都使用了使编程模式与应用程序用法特征尽可能类似的内核和系统库。
从条文上讲,BSD 不能算做 UNIX 系统,但是,BSD 各个分支代表开源 UNIX 这一观点已被广泛接受。令人感到惊奇的是,在 20 世纪 80 年代未和 90 年代初,运行于 PC 或 Mac 上的免费操作系统还没有一个能够冠以该名称。UNIX 存在于大型机和可伸缩的处理器架构(Scalable Processor Architecture、SPARC)之上。各大私有 UNIX 公司已经瓜分了商业 UNIX 市场。
最初的 BSD 操作系统是 386BSD 1993 年发生的两件大事永远地改变了 UNIX:即成立了 NetBSD 小组和再次流行 386BSD 修补工具。在十年前,BSD UNIX 开发人员再次从加州大学伯克莱分校的各层工作人员中和哲学博士学生中进行招募,资金大部分来源于国防高级研究计划署(Defense Advanced Research Projects Agency、DARPA),但是募集资金的形式从此结束。386BSD 项目是在 1985 年作为让 BSD UNIX 运行于 Intel 芯片的尝试而成立的。在 1989 年之前,该项目一直都没有发行它的第一个版本,而且因为多种原因,该项目最终成为了 Dr. Dobb's Journal 1992 年 7 月宣称的引用操作系统。对于 386BSD 0.1,已知有 250,000 次的下载量。
386BSD 主要基于 Bill 和 Lynne Jolitz 的观点来改进 UNIX 所依赖的概念。他们的初衷是开发免费的操作系统。但事实证明,完全靠自己的力量支持一个完整的操作系统不是他们力所能及的。该系统最终输给了由名不见经传的芬兰学生组成的编程队伍帮助构建的 Linux。
FreeBSD 的历史最初决定将 BSD UNIX 构建于 Intel 芯片之上的另一个小组是在 1993 年成立的。依靠 Bill Jolitz 以前的工作成果,该小组于 1993 年 12 月推出了 FreeBSD 1.0 版。在 1997 年初的时候,项目领导人 Jordan Hubbard 推动了该项目的发展,并管理着基础设施和 200 名开发人员。预计在今年年底,FreeBSD 可以推出 6.0 版本,该版本将成为所有免费的 UNIX 系统的最重要版本。FreeBSD 并不是对 UNIX 的克隆,虽然说其工作方式类似于 UNIX,并且其内核和系统 API 都符合 UNIX 标准。
FreeBSD 不像以前一样仅仅是适用于 Intel-/AMD 的系统。它还可以运行于 SPARC64 计算机上,并在 Alpha 架构上已有相当长的运行历史。如果 BSD 用户对运行 Mac OS X 的芯片感兴趣,那么他可以切换到 Darwin OS,即 Mac OS X 的开源核心,Darwin OS 依赖于多数 FreeBSD V5.0 及其后继产品。当然,NetBSD 自 1995 年起已运行在所有 Mac 架构之上。
哪些是 FreeBSD 具有而 Linux 不具有的功能在 Mac 上运行的 BSD在 Mac 上运行的 BSD 已经过时了。UNIX 在 Mac 架构上运行的时间更长。现在几乎没人记得这些了,但曾经有一段时间,有一个 AT&T UNIX 版本运行于 Apple 的 Quadra 计算机上。在 20 世纪 80 年代后期,这一 UNIX 版本被称为 Apple UNIX,并且它代表 Apple 在 UNIX 服务器空间方面的开发。Apple UNIX 从来没有被定位在更新的 PowerPC 架构之上,但它在 Motorola 68x00 芯片上运行得非常好。显然,此代码是专有的,需要四位数的资金投入才能行。令人宽慰的是,甚至像 Bill Joy 这样受人尊敬的杰出人物在 20 世纪 80 年代中期也放弃了 Mac,因为该计算机在 UNIX 世界中没人关注。
在 1991 年出现 386BSD 的时候,Mac 在一些人的心中还有占一席之地。Brad Grantham、Lawrence Kesteloot 和 Chris Caputo 设法将 386BSD 构建于 Mac 之上,并将其命名为 MacBSD。在 1992 年底,BSD UNIX 在 Mac II 上得到了较好的应用,尽管 BSD UNIX 的并行中断在当时已成为一种必需,而不再是一种可能:根据 AT&T 和 U.C. Berkeley 方面的法律规定,让 BSD UNIX 项目作为免费的技术使用差不多已经成为了一种合法的必需。不过,还有一点值得一提,在 Intel 提供专用于 BSD 系统的芯片之前,早期的 Macintosh 体系结构运行的是免费的 UNIX 系统。386BSD 除了建议哪一种 UNIX 应该运行在 Intel 芯片上之外,并没有做出更多贡献。它在最有利的时间内没有做得更好,并从来没有真正达到 1.0 版。
在 1993 夏天,Allen Briggs 和 Michael Finch 开始合并 NetBSD V0.8 和 MacBSD,以避免出现一系列的不兼容问题。毕竟,UNIX 之战在每个人的心目都会感到新鲜,并且 NetBSD 似乎也是一个有价值的项目,它将尽可能多的架构合并在 BSD 之下。在推出 NetBSD V1.0 的时候,NetBSD/mac68k 项目已经牢固地建立起来了,并且比以前更强大。
NetBSD/macppc 项目是更新的成果。PowerPC 端口在 1999 年已包括在 NetBSD 端口中(尽管所有 1995 PPC 之后的架构都已包括在内)。自从 604 PowerPC 以后,它支持所有 Mac 架构。
OpenBSD/macppc 基于 NetBSD 代码,但它很长一段时间以来一直使用 OpenBSD 项目获得完全功能的端口。显而易见,FreeBSD 项目比较单一,主要侧重于 Intel 和 AMD 的支持,尽管 FreeBSD 代码自从 Darwin(Mac OS X 的 OSS 内核)发行以来已运行于 Macintosh 架构之上。在今天看来,它们的相关性好像不大,因为 Apple 已经宣布对 Intel 的支持。但是在 FreeBSD 和 Darwin 的开发之间有相当多的重叠,并且许多 FreeBSD 开发人员都是 Apple 的员工。
FreeBSD 是一个操作系统,而不仅仅是一个内核。但是,该说法并不意味着大致与以前的说法相同,因为内核的叫法是相当随意的。在 UNIX 环境中,它意味着在完成引导过程之后,用户无法访问某些库和可执行文件。内核管理着应用程序的硬件,但是目前许多 UNIX 类型的操作系统都为用户级别的线程提供了一个角色,即管理内核资源。您可以安全地假定在运行时间内用户无法访问的任何东西都是内核的一部分。这并不意味着用户无法影响内核的行为。例如,某些实用工具可以报告和调整内存管理,并且这些工具都明确表明是由用户使用的。这些实用工具通过系统的 API 进行通信,后者不是内核的一部分,但它很明显是操作系统的一部分。当然,FreeBSD 包括所有这些工具以及许多其他用于处理网络和硬件特性的实用工具和应用程序。
如果比较完整的 Linux 内核下载和 FreeBSD 下载的内容,您就会了解到,许多下载内容都是相同的。也就是说,它们都有 IP 堆栈、内存管理例程、文件系统实现,等等。文件系统的层次结构具有明显类似的起源,并且多数命令行应用程序具有相同的名称和类似的命令行语义。当然,实际的实现有些不同,但您仍然能够看到两种系统都有类似的概念来源。架构方面的主要不同之处在于 FreeBSD 从所谓的缓冲区缓存 读取文件的方式与 Linux 向其中写入文件的方式的不同,严格地说,该缓存甚至还谈不上是独立于虚拟内存而存在的实体。Linux 始终自动管理缓冲区缓存的大小,但其内存管理例程的工作方式与 FreeBSD 的不同。 |