Unix
UNIX(常写作 Unix)是一类通用的分时、多用户、多任务操作系统及其技术体系,其核心特征在于通过统一的文件、进程和文本流接口组织系统资源,强调“小工具组合”与模块化设计。Unix 最初由美国 AT&T 贝尔实验室的肯·汤普森(Ken Thompson)、丹尼斯·里奇(Dennis Ritchie)等研究人员于 1969 年前后开发,其设计思想深刻影响了后续几乎所有现代操作系统。<ref name="Ritchie1974">Ritchie, D. M., & Thompson, K. (1974). The UNIX Time-Sharing System. Communications of the ACM, 17(7), 365-375.</ref> 20 世纪 70 年代初,Unix 内核及实用工具被用 C 语言重写,显著提升了系统在不同硬件平台间的可移植性,这一实践也反过来促进了 C 语言的普及。随着 Unix 在学术界和工业界的广泛传播,其衍生出多个分支(如 BSD 和 System V),并催生了 POSIX 和单一 UNIX 规范(SUS)等标准化工作。在商标意义上,“UNIX”是 The Open Group 持有的注册商标,只有完全符合单一 UNIX 规范并通过认证的系统方可使用该名称。[1]
| 中文名 | Unix |
|---|---|
| 外文名 | Unix / UNIX |
| 类型 | 通用操作系统(分时、多用户、多任务) |
| 起源 | AT&T 贝尔实验室(1969 年前后形成原型) |
| 核心思想 | 小工具组合、文本流处理、统一接口与可移植性 |
| 相关标准 | POSIX(IEEE 1003.1)、单一 UNIX 规范(SUS) |
| 主要分支 | Research Unix、BSD、System V 及其商业衍生(AIX、Solaris 等) |
| 商标与认证 | UNIX 为 The Open Group 注册商标;仅认证系统可使用 UNIX 标识 |
Unix 的起源可追溯至 1965 年启动的 Multics(MULTiplexed Information and Computing Service)项目,该项目由贝尔实验室、通用电气公司和麻省理工学院联合开展,旨在构建一个大规模交互式分时操作系统。由于项目目标过于复杂且进展缓慢,AT&T 于 1969 年决定退出。此后,贝尔实验室的肯·汤普森、丹尼斯·里奇等研究人员利用一台闲置的 PDP-7 计算机,基于之前 Multics 的经验,开发了一个更为简洁的新型操作系统。该系统最初被戏称为 UNICS(UNiplexed Information and Computing Service),后演变为 UNIX。[2] 1971 年,Unix 首次在实际生产环境中部署,用于贝尔实验室专利部门的文字处理工作。
1972 至 1973 年间,丹尼斯·里奇设计了 C 语言,并与肯·汤普森一同将 Unix 内核及其大部分工具用 C 语言重写。这一决定使 Unix 摆脱了与特定汇编语言的绑定,只需修改少量与机器相关的代码即可移植到其他计算机架构,这是操作系统可移植性实践的重要里程碑。[3] 1973 年,里奇和汤普森在操作系统原理(SOSP)研讨会上发表了关于 Unix 的论文,标志着该系统首次公开亮相。随后,AT&T 以许可证方式向教育机构和企业提供 Unix 源码,第六版(V6)于 1975 年起以约 20,000 美元的价格授权给商业用户。
1977 年,加州大学伯克利分校的研究生比尔·乔伊(Bill Joy)基于贝尔实验室的 V6 版本发布了 1BSD(Berkeley Software Distribution),其中包含增强的工具和 Pascal 编译器。伯克利分校随后持续开发 BSD,加入了 vi 编辑器、C shell 以及 TCP/IP 网络协议栈等创新特性,使 BSD 成为 Unix 最重要的分支之一。[2] 与此同时,AT&T 于 1983 年发布了 System V,这是一个面向商业应用的官方发行版,其后续版本(特别是 SVR4,1989 年发布)融合了 System V 和 BSD 的诸多优点,成为 IBM AIX、HP-UX、Oracle Solaris 等商业 Unix 系统的基础。
Unix 的设计哲学强调“小即是美”,鼓励开发功能单一的专用工具,并通过标准接口(如管道 pipe)将这些工具串联以完成复杂任务。道格拉斯·麦克罗伊(M. Douglas McIlroy)曾总结:“期望每个程序的输出成为另一个尚未确定的程序的输入。”[4] 这种基于文本流的组合方式极大提升了系统的灵活性与可扩展性。
Unix 将几乎所有系统资源——包括普通文件、目录、设备、进程间通信通道等——统一抽象为“文件”,这些对象通过文件系统层次结构进行访问,并使用相同的 open、read、write 等系统调用进行操作。[3] 这一抽象简化了程序与内核的交互,使得设备管理和进程通信能够复用同一套接口逻辑。
Unix 系统采用内核-系统调用-应用的分层架构。内核负责进程调度、内存管理、文件系统及设备驱动;系统调用接口供用户态程序访问内核功能;最外层是命令解释器(shell)与各类实用工具(如 grep、awk、sed 等)。这种分层设计保证了内核的稳定性和上层软件的相对独立性。
Research Unix 是贝尔实验室内部持续开发的原始版本系列,其中第七版(V7,1979 年)是传播最广、影响最深远的版本,许多后来的商业 Unix 和类 Unix 系统都从中汲取了核心设计。
BSD 源自伯克利分校的增强版,其贡献包括 TCP/IP 协议栈(奠定了互联网基础)、虚拟内存管理、以及改进的文件系统(FFS)。BSD 直接衍生出 FreeBSD、NetBSD、OpenBSD 以及苹果公司的 Darwin(macOS 和 iOS 的核心)等现代操作系统。[2]
System V 是 AT&T 的商业化主干,其 SVR4 版本融合了 BSD 特性,成为业界主流商业 Unix 的共同基础。System V 的许可证模式推动了 Unix 的商业化,但也引发了与 BSD 之间的长期竞争。
随着 Unix 变体的增多,不同系统间的接口差异导致应用程序移植困难。为此,IEEE 于 1988 年发布 1003.1 标准,即 POSIX(Portable Operating System Interface for uniX),定义了系统调用、Shell 及常用工具的行为规范,以实现源代码级别的可移植性。[5] POSIX 后续被国际标准化组织采纳,并持续更新。
1990 年代初,主要 Unix 厂商联合制定了通用 API 规范(Spec 1170),后交由 The Open Group 维护,于 1997 年发布单一 UNIX 规范(SUS)第 2 版。该规范以 POSIX 为核心并加以扩展,由奥斯汀小组(Austin Group)负责持续开发。最新版本为 SUS 第 5 版(2024 年),其内容与 POSIX.1-2024 保持同步。[1]
Unix 的设计理念与实现方式深刻影响了现代计算环境。Linux 内核直接采用 Unix 的系统调用与编程模型,macOS、iOS、Android 等主流系统均基于 Unix 或类 Unix 内核构建。绝大多数互联网服务器运行类 Unix 系统,其稳定性和安全性被广泛验证。此外,“小工具组合”与“文本流接口”的设计哲学对软件工程、命令行工具链乃至开发文化(如 DevOps)均产生了持久影响。
“UNIX”是 The Open Group 在全球范围内持有的注册商标。该组织通过严格的认证测试,对符合单一 UNIX 规范的系统授予使用权。未通过认证的类似系统通常被称为“类 Unix”(Unix-like)。目前,macOS、AIX、Solaris 等系统已获得官方认证。[1]
- ↑ 1.0 1.1 1.2 The Open Group. UNIX Certification. https://www.opengroup.org/certification
- ↑ 2.0 2.1 2.2 Salus, P. H. (1994). A Quarter Century of UNIX. Addison-Wesley.
- ↑ 3.0 3.1 引用错误:
<ref>标签无效;未给name(名称)为Ritchie1974的ref(参考)提供文本 - ↑ McIlroy, M. D. (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971-1986. AT&T Bell Laboratories.
- ↑ IEEE Std 1003.1-2024 (also ISO/IEC 9945). IEEE Computer Society.