Unix 的发展无疑是这段计算史上最重要的里程碑之一。 该操作系统不仅引入了当今信息技术中一些最基本的概念,例如分层结构的文件系统,它还是许多其他系统的基础,例如 Apple 的 macOS 和 iOS,或开源 Linux。 反过来,这导致了无数衍生产品的出现,例如 Ubuntu、Debian 或移动 Android。 但 Unix 究竟是如何成为最有影响力的计算机管理应用程序之一的,为什么它的开发团队能够将最初的想法完全记录在黑板和记事本上?
Multics 联合项目奠定基础
1965 年,一个工作组在联合计算机会议上提出了他们关于新操作系统的想法。 该小组由麻省理工学院 (MIT)、通用电气和贝尔实验室 (Bell Labs) 或 AT&T(自 2016 年起隶属于诺基亚研发部门)的员工组成。 他们将操作系统命名为 Multiplexed Information and Computing Service,简称 Multics。 他们追求全新的方法,Multics 是最早允许多个用户通过共享底层处理器的计算时间在一台计算机上同时工作的系统之一。
Multics 工作组需要一台具有特定要求的计算机来启动他们的项目:一方面,它必须具有格式清晰的指令,以便能够使用 IBM 用于开发的高级编程语言 PL/I。 另一方面,它必须支持计划中的多用户操作和异步工作,以最大限度地减少内存管理中的性能损失。 为此,选择了通用电气的 GE-635 和后来的 GE-645。 开发是在多用户系统 CTSS 上进行的,该系统早在 1960 年代由麻省理工学院开发,并且已经启动并运行。 PL/I 编译器开发的延迟、财务瓶颈、内部分歧和不断增长的外部压力最终导致贝尔实验室于 1969 年退出该项目。
Multics 成为 Unix
Multics 在麻省理工学院得到进一步开发,后来在被通用电气收购后(直到 1986 年),由霍尼韦尔国际公司在霍尼韦尔 6180 机器上进行商业分发。 然而,当时在贝尔实验室工作的计算机科学家肯·汤普森 (Ken Thompson) 无法放弃多用户系统:他与丹尼斯·里奇 (Dennis Ritchie) 和 AT&T 的一个小团队一起,开始规划自己的系统,基于 多元学原理。 但最初证明寻找合适的计算机是徒劳的——由于贝尔实验室拒绝购买合适的副本,开发人员开始在便条纸和黑板上记录他们的笔记和计划文件系统的进度。
最后,为计划中的项目购置了一台来自 Digital Equipment Corporation (DEC) 的二手 PDP-7 小型计算机。 这个“只有”墙上单元大小的计算机系统与 GECOS(通用电气综合操作系统)一起运行,从那时起它就作为开发平台。 有价值的软件工具,如命令行 (SH) 和编辑器 (ED) 以及现有的纸质文件系统得到了快速开发 – 最初仍然使用汇编语言(面向硬件,但对人类进行了简化)。 由于新的操作系统只允许两个用户同时在一个进程上工作(不像 Multics),所以团队根据模板将其命名为 Unics。 由于 GECOS 中文件名长度的限制,最终决定使用 Unix。
先是 B,然后是 C:Unix 获得了自己的高级编程语言
在贝尔实验室团队编写了 Unix 和其他一些基本程序之后,是时候用不太复杂的变体替换用于此目的的汇编语言了。 然而,开发已有的 IBM 语言 Fortran 的计划在短时间内就被否决了。 相反,工作开始于他们自己的语言,并且强烈面向 PL/I(Multics 语言)和麻省理工学院开发的 BCPL(基本组合编程语言)。 随后,Ritchie 和他的同事们用这种语言重写了一些系统工具,直到他们最终在 1970 年收到了一台新的 PDP-11 计算机,并再次被迫重新考虑他们的技术。 这是因为新的系统架构不像 PDP-7 计算机和编程语言 B 那样是面向字的,而是面向字节的。
在接下来的两年里,贝尔实验室开发了 C 的后继者,其语法和其他特性可以在许多现代编程语言中找到,如 c++、JavaScript、PHP 或 Perl。 当 1973 年语言足够成熟时,开发团队开始用 C 语言重写完整的 Unix 内核。结果由 Unix 团队在 1970 年代中期发布。 由于 AT&T 当时不允许销售任何软件,作为国家控制的电信行业,Unix(版本 6)是一个多用户系统,也允许同时进行多个进程,免费提供给所有感兴趣的大学 – 包括一个 C 编译器,这使得该系统几乎可以在所有平台上使用。
硬件友好和开源:Unix 征服了开发者场景
随着面向教育机构的 Unix 软件的发布,新操作系统的成功迅速变得越来越明显,最初只是编程界的一个玩具。 在此期间,IBM 大型机和 PDP 机器上的常见工作流程继续在 RSX-11、RT-11 或 IST 等本地系统上运行。 然而,对于开发者而言,内核和单个应用程序提供的源代码的价值不仅仅是一种学习效果:Unix 对硬件的低要求及其高可用性鼓励了实验和进一步开发,这尤其受到了 加州大学伯克利分校(汤姆森以前的家乡大学)- 尽管他在 1976 年在其新成立的计算机科学学院担任客座教授这一事实可能发挥了重要作用。
当时的两名研究生 Bill Joy 和 Chuck Haley 改进了 Thompson 开发的 Pascal 系统,并用 ex 编写了一个全新的文本编辑器 – vi 的前身,今天仍然可以在 unixoid 系统标准安装中找到它。 1977 年,在 Joy 的指导下,出现了 Unix 的修改变体,其中包含迄今为止所做的改进和进一步发展。 Berkeley Software Distribution (BSD),后来将 TCP/IP 网络协议集成到 Unix 宇宙中,并首次能够满足自由操作系统的要求(得益于其自身的 BSD 许可证),并被认为 成为迄今为止最重要的 Unix 修改之一。
80 年代:商业化和 Unix 战争
在接下来的几年里,越来越多的修改被开发出来,包括那些专注于其他方面的修改,比如金融。 例如,Microsoft 在 1979 年获得了 Unix V7 许可,用于为 Intel 和 Motorola 处理器等开发端口。 次年,他们发布了 Xenix,最初计划将其作为 PC 的标准操作系统,但最终对硬件提出了过高的要求。 微软最终将进一步开发交给了软件制造商 SCO(Santa Cruz Operation),以专注于 OS/2 和 MS-DOS 的进一步开发。
1982 年,比尔·乔伊 (Bill Joy) 也加入了这一行列,他新成立的公司 Sun Microsystems 使用基于 BSD 的专有系统 SunOS(Solaris 的前身),该系统专门设计用于服务器和工作站。
然而,真正争夺 Unix 粉丝的战斗发生在 AT&T 和伯克利大学之间,前者现已获得商业发行许可,后者由于拥有大量支持程序员而能够突出有价值的创新。 AT&T 首先试图通过 System III(1981 年)和 System V 的新优化版本(1983 年)征服市场,两者均基于 Unix V7。 随后伯克利大学同时发布了 4.3BSD,在 18 个月内发放了 1000 个许可证。 这使得它比付费的 System V 更受欢迎,后者缺乏 Berkeley 变体的文件快速系统 (FFS) 和网络功能(由于集成了 TCP/IP)。
随着 System V 的第四次发布(1988 年),AT&T 实现了这两个和许多其他 BSD 功能,以及 Xenix 和 SunOF,这导致许多用户转向商业选项。
谢谢,Penguin:Unix 成为服务器解决方案
虽然不同的 Unix 系统最初在销售和忠诚度方面相互竞争,但苹果和微软的竞争始于个人计算机领域,后来又进入了服务器领域。 虽然微软在家用 PC 方面赢得了比赛,但基于 Unix 概念的系统在 1991 年随 Linux 突然出现在现场,并在接下来的几年中赢得了服务器环境。 得益于免费许可的内核和免费提供的 GNU 软件,开发人员 Linus Torvalds 实现了对具有竞争力的开源操作系统的渴望,并赢得了当时的市场。
直到今天,许多 Unix Linux 衍生产品,如 Debian、CentOS、Red Hat 或 Ubuntu 都被用作各种服务器的系统软件。 特别是 Ubuntu 在家庭 PC 中越来越受欢迎。 到目前为止,我们有一篇文章介绍的 Linux 并不是当今软件世界中唯一重要的 Unix 继承者:自 Mac OS X 10.0 或 Mac OS X Server 1.0 以来,Apple 操作系统使用免费的 BSD 变体 Darwin 作为子结构。 Berkeley Unix 本身甚至多次代表许多其他免费衍生产品,如 Free BSD、Open BSD 或 Net BSD。
与 iOS(与 macOS 相同的系统基础)和 Android(基于 Linux 内核)这两个最广泛用于移动设备的操作系统也属于 Unix 家族。
什么是 Unix? 系统最重要的里程碑功能
当它被引入时,Unix 的许多显着特征都是绝对新颖的,它们不仅旨在影响 unixoid 系统和发行版的开发,而且还被竞争对手 Apple 和 Microsoft 在其操作系统中采用。 特别是考虑到以下特征时,Richie、Thompson 和他们参与 Unix 的同事是当时现代操作系统的先驱:
- 分层的通用文件系统
Unix 的一个基本部分从一开始就是分层组织的文件系统,它允许用户将文件结构化到文件夹中。 可以将任意数量的子目录分配给根目录,根目录用“/”标记。 遵循“一切皆文件”的基本原则,Unix 还将驱动器、硬盘、终端或其他计算机映射为文件系统中的设备文件。 一些衍生产品,包括 Linux,甚至将进程及其属性标记为 procfs 虚拟文件系统中的文件。
- 多任务处理
Unix 成功的另一个决定性因素是能够同时执行多个进程或程序而不会相互干扰。 该操作系统从一开始就基于抢占式多任务处理方法。 使用这种方法,调度程序(它是操作系统内核的一部分)通过优先级系统管理各个进程。 直到 1990 年代后期,Apple 和 Microsoft 才开始实施类似的流程管理解决方案。
- 多用户系统
甚至 Multics 的主要目标也是一个允许多个用户同时工作的系统。 为此,为每个程序和流程分配了一个所有者。 即使 Unix 最初仅限于两个用户,此功能从一开始就是系统软件组合的一部分。 这种多用户系统的优势不仅在于有机会同时访问单个处理器的性能,还在于相关的权限管理。 管理员现在可以为不同的用户定义访问权限和可用资源。 然而,最初,涉及每台相应计算机的硬件也是先决条件。
- 网络能力
凭借 4.2BSD,伯克利的 Unix 于 1983 年成为首批集成互联网协议栈的操作系统之一,为互联网和简单的网络配置提供了基础,并提供了充当客户端或服务器的能力。 80年代后期,System V的第四个版本(已经提到)也是商用AT&T系统的变种,将内核添加到传说中的协议家族中。 Windows 应该只支持 TCP/IP 3.11 (1993) 和适当的扩展。
- 平台独立性
在创建 Unix 时,虽然其他操作系统及其应用程序仍然针对特定处理器类型进行定制,但贝尔实验室团队从一开始就追求便携式系统的方法。 尽管第一种语言是汇编语言,但系统软件的基本结构一创建,该项目就创建了一种新的、更高级的编程语言。 这种语言是历史上 C 语言的前身。 虽然用 C 语言编写的组件仍然与 PDP 机器架构紧密相关,Ritchie 和他的同事将其用作他们工作的基础,尽管包含了编译器。 然而,最近,随着 Unix V7 版本(1979 年)的大幅修订,该操作系统理所当然地赢得了便携系统的声誉。
- Unix 工具箱原理和 shell
Unix 系统结合了大量有用的工具和命令,它们通常只为少数特殊任务而设计。 例如,Linux 使用 GNU 工具。 对于一般问题的解决,原则是在标准工具的组合中寻找答案,而不是开发特定的新程序。 最重要的工具一直是 shell (SH),它是一种面向文本的命令解释器,可提供广泛的编程选项。 这个经典的用户界面也可以在没有图形用户界面的情况下使用,即使那种界面自然会增加用户的舒适度。 但是,shell 确实为有经验的用户提供了一些重要的优势:
- 智能自动完成简化操作
- 复制和粘贴功能
- 交互(直接访问)和非交互(脚本执行)状态可用
- 更高的灵活性,因为各个应用程序(工具、命令)几乎可以自由组合
- 标准化和稳定的用户界面,GUI 并不总是能保证这一点
- 自动记录脚本工作路径
- 快速轻松地实施应用程序
最后:如果你想了解操作系统的工作原理,请看一看 Unix
微软和苹果的崛起,与它们的创造者比尔盖茨和史蒂夫乔布斯直接相关,无疑是无与伦比的。 然而,这两个巨大的成功故事的基础是由丹尼斯·里奇、肯·汤普森和 Unix 团队其他成员在 1969 年至 1974 年间的开创性工作奠定的。Unix 不仅产生了自己的衍生产品,还影响了其他操作系统 具有层次结构文件系统、强大的 shell 或高可移植性等概念。 为了实现后者,计算机历史上最具影响力的编程语言 C 几乎是顺带开发的。
要了解语言和一般操作系统功能的可能性,没有比 Unix 系统更好的说明对象了。 您甚至不必使用其中一种经典变体:Gentoo 或 Ubuntu 等 Linux 发行版已经适应了现代需求,而没有放弃对系统的最大控制等基本功能。 使用对初学者友好的 macOS,您的可能性会受到更多限制,它掌握了强大的 Unix 基础和精心设计的图形用户界面之间的平衡行为。