Berkeley 标准发行版操作系统

2025年4月28日 | 阅读 8 分钟

伯克利软件发行版(Berkeley Software Distribution),也称为伯克利标准发行版(BSD),是由加州大学伯克利分校计算机系统研究组(CSRG)创建和分发的操作系统,现已废弃。它基于Research Unix。日常使用的“BSD”名称指的是其开源后代,如FreeBSD、OpenBSD、NetBSD和DragonFly BSD。

Berkeley Standard Distribution Operating System

由于 BSD 是使用贝尔实验室创建的原始 Unix 源代码构建的,因此最初被称为伯克利 Unix。由于其宽松的许可证以及被许多研究人员和科技公司创建者所接触,BSD 在 20 世纪 80 年代被工作站制造商广泛采用,形式为 DEC Ultrix 和 Sun Microsystems SunOS 等专有 Unix 衍生产品。在 20 世纪 90 年代,这些专有的 BSD 变种大部分被 UNIX SVR4 和 OSF/1 取代。

包括 FreeBSD、OpenBSD、NetBSD、DragonFly BSD、Darwin 和 TrueOS 在内的许多开源操作系统都是基于后来的 BSD 版本构建的。这些操作系统又被专有操作系统使用,例如 Microsoft Windows(从 2000 和 XP 开始),它使用了其 TCP/IP 软件的至少一部分(这是被允许的),以及从它们发展而来的 macOS 和 iOS 操作系统。PlayStation 5、PlayStation 4、PlayStation Vita 和 Nintendo Switch 的操作系统也是使用 FreeBSD 代码构建的。

历史

由于 20 世纪 70 年代贝尔实验室首次部署操作系统时提供了源代码,大学学者得以修改和扩展 Unix。在 CS 教授 Bob Fabry 的坚持下,他曾是 Unix 首次发布时操作系统原理研讨会的编程委员会成员,该操作系统于 1974 年被引入伯克利。

该系统运行在 PDP-11/45 上,但由于财政限制,Unix 每天只能在该计算机上运行八个多小时(或有时在白天,夜间也有特定时间),因为它与伯克利数学和统计系共享,后者使用 RSTS。次年,在伯克利,在一台更大的 PDP-11/70 上安装了由 Ingres 数据库项目提供的资金。

BSD 起源于 20 世纪 70 年代末由加州大学伯克利分校的开发人员在 Bill Joy 的指导下开发的 Unix 衍生产品。它增加了与 AT&T 拥有的代码相结合的功能。

Ken Thompson 在 1975 年离开贝尔实验室休假后,成为伯克利的一名访问讲师。他开始着手开发该系统的 Pascal 版本,并协助安装了 Version 6 Unix。研究生 Bill Joy 和 Chuck Haley 改进了 Thompson 的 Pascal,并安装了一个更好的文本编辑器,例如。当其他学院对伯克利的软件表示兴趣时,Joy 于 1977 年开始创建第一个伯克利软件发行版(1BSD)。它于 1978 年 3 月 9 日发布。1BSD 不是一个独立的操作系统,而是一个 Version 6 Unix 的附加组件。分发了大约三十份副本。

1979 年 5 月,2BSD 发布,包含 C shell 和文本编辑器 vi(ex 的图形版本),这是 Joy 编写的两个仍在 Unix 系统上使用的应用程序。还包括 1BSD 软件的升级版本。Bill Joy 发送了大约 75 份 2BSD。

1978 年,伯克利安装了一台 VAX 计算机;然而,Unix 到 VAX 设计的移植,UNIX/32V,未能利用 VAX 的内存虚拟化特性。由伯克利研究生 Özalp Babaoğlu 开发的虚拟内存解决方案被包含在重新构建的 32V 内核中。此外,创建了一个新操作系统,其中包含 32V 实用程序和将 2BSD 功能移植到 VAX 的程序,32V 实用程序最终在 1979 年底作为 3BSD 发布。虚拟化的 VAX/UNIX 或 VMUNIX 是 3BSD 的另一个名称。直到 4.4BSD,BSD 内核映像通常被称为 /vmunix。

在 1986 年 6 月发布 4.3BSD 之后,决定 BSD 将放弃过时的 VAX 平台。尽管当时看起来很有希望,但 Computer Consoles Inc. 的 authority 6/32 平台开发人员很快就放弃了它。尽管如此,1988 年 6 月的 4.3BSD-Tahoe 移植在通过区分 BSD 中与机器相关的和与机器无关的功能方面,朝着改进系统的未来可移植性迈出了重要一步。

除了确保可移植性之外,CSRG 还与 LBL 的 Van Jacobson 合作开发了创新的 TCP/IP 算法,增强了内核的内存虚拟化系统,并构建了开放系统互连网络协议栈,以应对互联网的快速扩张。

在此之前,由于使用了 AT&T 的专有 Unix 代码,所有 BSD 版本都受到 AT&T 软件协议的约束。最初完全在 AT&T 外部生产的第二版网络软件引起了其他外部公司的关注,并且源代码许可证变得价格昂贵。这导致了 Networking Release 1 (Net/1) 的诞生,它完全可以在 BSD 许可证下重新分发,并提供给非 AT&T 代码的许可证持有者。1989 年 6 月发布了该版本。

继 Net/1 之后,BSD 开发人员 Keith Bostic 提议将更多非 AT&T 相关的 BSD 系统组件以与 Net/1 相同的许可证提供。为此,他开始了一项项目,在不使用 AT&T 代码的情况下重写大部分常用 Unix 工具。不到十八个月,所有 AT&T 实用程序都被替换,并且发现内核中包含很少的 AT&T 文件。在删除这些数据后,Networking Release 2 (Net/2) — 一个几乎完整的、可自由分发的操作系统 — 于 1991 年 6 月发布。

在 Net/2 的基础上,构建了两个不同的 BSD 移植到 Intel 80386 微处理器。Berkeley Software Design 的专有 BSD/386(后来更名为 BSD/OS)和 William 和 Lynne Jolitz 的免费 386BSD。尽管 386BSD 寿命短暂,但它为后来启动的 NetBSD 和 FreeBSD 项目奠定了基础。

BSDi 很快就与 AT&T 的 Unix System Laboratories (USL) 部门发生了法律纠纷,该部门后来成为 Unix 商标和 System V 版权的拥有者。在 1992 年 USL v. BSDi 诉讼提起后,Net/2 的分发受到禁令,直到 USL 关于源代码版权的主张得到解决。由于这场诉讼,在其宪法地位不确定期间,将免费软件 BSD 后代的发展推迟了两年多,基于 Linux 操作系统的系统(没有面临同样的法律困难)获得了更大的发展势头。

1994 年 1 月,该案件得到解决,对伯克利非常有利。在伯克利发布的 18,000 项中,只有三项需要删除,另有 70 项需要编辑以包含 USL 版权声明。协议的另一项要求是,USL 在未来的 4.4BSD 版本中,不得在未来案件中起诉伯克利拥有的软件的消费者和经销商。

1995 年的 4.4BSD-Lite Release 2 是伯克利最后一次发布;此后,CSRG 被解散,伯克利 BSD 的开发也随之结束。此后,开发和维护了许多完全或部分源自 4.4BSD-Lite 的变体。

由于 BSD 许可证的宽松特性,许多其他商业和开源操作系统都能够集成 BSD 源代码。例如,自 Windows 2000 以来,Microsoft Windows 已包含 BSD 命令行连接实用程序的重构版本,并在 TCP/IP 的执行中使用了 BSD 代码。Darwin,为 Apple 的 macOS 和 iOS 提供支持的内核,源自 FreeBSD 和 4.4BSD-Lite2。BSD 代码也是 Solaris 等几种商业化 Unix 操作系统的一部分。

与 Research Unix 的联系

贝尔实验室的 Research Unix 版本与 BSD 密切相关,从第 8 版开始。这是因为 Research Unix 第 8 版是基于 VAX 的 4.1cBSD 构建的。这在后来的迭代中得到了维护,例如第 9 版,其中包含了 4.3BSD 的增强功能和源代码。因此,这些后来的 Research Unix 版本比 System V 更像 BSD。Dennis Ritchie 在 2000 年的 Usenet 帖子中解释了 BSD 和 Research Unix 之间的这种联系。

Research Unix 第 8 版(我认为)始于 BSD 4.1c,但其中大量内容被删除并替换为我们的内容。第九版和第十版也遵循了这一点。我们认为,普通用户的命令集比 SysVish 更具 BSD 特色,但仍然非常多样化。

与 System V 的联系

正如 Eric S. Raymond 所说,“分裂大约发生在‘长发男’和‘短发男’之间;开发人员和技术人员倾向于与伯克利和 BSD 结盟,而像 AT&T 和 System V 这样的商业头脑型人士则倾向于另一方。”

David A. Curry 在 1989 年谈到了 System V 和 BSD 之间的区别。据他介绍,System V 通常被称为“标准 Unix”。然而,他指出,由于其优越的功能和能力,BSD 在政府和学术计算机中心更为普遍。

政府和学术计算机中心使用伯克利 Unix(Berkeley UNIX)而不是 System V。这有几个原因。然而,其中最重要的两个可能是伯克利 Unix 提供了直到最近(3.0 版)System V 完全缺失的网络功能。伯克利 Unix 更适合研究环境,后者需要更快的目录结构、更有效地使用虚拟内存,以及更广泛的编程语言选项。

伯克利套接字

伯克利 Unix 是第一个附带伯克利套接字(Berkeley sockets)的 Unix,这些模块支持互联网协议层。IP 的前身,ARPAnet 的 NCP,在 Unix 中实现并在伯克利可用。它是在 1975 年创建的。另一方面,当伊利诺伊大学包含文件传输协议(FTP)和 Telnet 客户端时,PDP-11 有限的内存导致了复杂的设计和操作问题。

套接字与 Unix 操作系统的文件描述符集成在一起,使得网络数据的读写几乎和磁盘访问一样简单。最终,AT&T 实验室发布了自己的 STREAMS 库,该库在完全不同的软件堆栈中包含了非常相似的功能;然而,由于现有套接字库的广泛使用,新 API 的影响有所减弱。第一波知名的 Unix 工作站由 Sun Microsystems 的 SunOS 奠定基础,SunOS 是使用早期 BSD 版本创建的。

二进制兼容性

利用二进制兼容层,一些 BSD 操作系统可以在相同的体系结构上运行来自多个不同操作系统的原生应用程序。与仿真相比,这更简单、更快捷;例如,它允许为 Linux 设计的软件以近乎全速运行。因此,考虑到日益增多的商业和闭源的 Linux 专用软件,BSDs 适用于桌面和服务器环境。此外,管理员可以使用此功能将旧的商业应用程序(可能仅在商业 Unix 版本上可用)迁移到更新的操作系统,从而在找到更好的替代品之前保持这些应用程序的可用性。

标准

许多流行的 IEEE(电气和电子工程师协会)、美国国家标准协会(ANSI)、国际标准化组织(ISO)和 POSIX 标准都得到了现代 BSD 操作系统的支持,尽管它们仍然保留了大部分经典的 BSD 特性。与 AT&T Unix 一样,BSD 的内核是单体内核,这意味着其设备驱动程序作为操作系统核心的一部分在特权状态下运行。

BSD 的后代

BSD 是许多操作系统的基础。1993 年,NetBSD 和 FreeBSD 都得到了开发。它们在 1994 年结合了 4.4BSD-Lite 的源代码,最初是由 386BSD(通常称为“Jolix”)创建的。1995 年,OpenBSD 从 NetBSD 分裂出来,2003 年,DragonFly BSD 从 FreeBSD 分裂出来。