第 1.1 节 操作系统的历程:UNIX、Unix-like、Linux & FreeBSD
最后更新于
最后更新于
从前,UNIX 是一款操作系统。最后由 C 语言改写产生。——源自 AT&T
(美国电话电报公司)的贝尔实验室。
现在是一种 标准规范、一款 法律上的商标。更是一种 哲学思想,一项 软件工程原则。
UNIX 认证查询网址:
现在,我们可以知道认证 UNIX 需要:
交钱认证
可以看到,常见的,经过认证的 UNIX 操作系统有 Apple macOS。即从商标的角度上讲,macOS 可以称得上是标准的 UNIX 操作系统。故,要安装 UNIX 的人可以去黑苹果了
技巧
macOS/iOS 等与 BSD 的关系
所以看似是安卓和苹果之争,其实是 Linux 与 BSD 之争。
也许也是大教堂与市集之争。
注意
Linux 几乎已完全放弃了 UNIX 哲学,不提 Linux Kernel 引入 Systemd。单是 Wayland、Btrfs、PulseAudio 就能看出这一点。
所以你在 Linux 上,强调传统的 UNIX 哲学或软件工程原则——比如一切皆文件,管道流等,并不十分妥帖。
思考题
在 Huawei EulerOS(基于 CentOS)都能通过 UNIX 认证的今天,再讨论是不是 UNIX 这件事看起来已经变得索然无味,毫无意义可言。甚至 Windows 加钱也能认证成为 UNIX(其也实现了大部分 POSIX)。
结合全文,是 UNIX 哲学过时了,不再适应现代操作系统了?还是 Linux 将开源之路引向了苦难哲学(失去了其原本的简洁和透明性?),走了改旗易帜的邪路?
思考题
Those who do not understand Unix are condemned to reinvent it, poorly. (那些不懂 Unix 的人注定要再造一个四不像式 Unix)
作者 Henry Spencer 并未明确批评哪个操作系统,那么你认为,现在这句话更适合哪个常见的操作系统?为什么?
Unix 哲学源于 UNIX 操作系统的开发,作者是 Ken Thompson。Unix 哲学一言以蔽之即大道至简(“keep it simple, stupid”):
小即美
一个程序只做一件事
原型先行
可移植性先于高效率性
不使用二进制
沉默是金(无报错就沉默)
避免仅用户界面(无命令行,仅 GUI)
思考题
我认为《UNIX 编程艺术》这本书并没有说到点上:作者对 UNIX 哲学理解的深度不够且有所偏差,窃以为所谓 UNIX 哲学核心就是以人为本。即代码是给人看,给人用,由人来维护的,而非机器。UNIX 哲学在根本上是为了高扬人的主体性。原书说了些具体而无用的废话,什么模块化,少输出(沉默是金)。这些根本不是 UNIX 原则,现在反而是阻碍其发展的细枝末节。
事实上几乎所有人都想知道程序操作的进度。试问,如果下载文件不显示进度,那会怎样?这个理论产生纯粹是因为历史原因,以前屏幕放不下内存太小罢了(管道化根本不是完全不支持输出进度的理由,完全可以加个选项来支持),换言之,这根本不是什么铁律。
阅读《UNIX 编程艺术》,谈一谈在 Ai 时代,你怎样理解 UNIX 哲学?你心中的 UNIX 哲学是怎样构建的?
《UNIX 编程艺术》,Eric Raymond 著,ISBN: 9787121176654,电子工业出版社。
《Linux/Unix 设计思想》,Mike Gancarz 著,9787115266927,人民邮电出版社。(已绝版)
1964 年麻省理工学院推出的 CTSS(兼容分时系统),是当时最有创造性的操作系统,有了 CTSS 这种高效的操作系统,麻省理工学院的研究人员决定做一个更好的版本。他们开始设计 Multics 系统。Mutlics 意思是多路复用信息和计算服务。
Multics 意图创造强悍的新软件和比肩 IBM 7094 功能更丰富的新硬件,麻省理工学院邀请了两家公司来帮忙。美国通用电气公司负责设计及生产有全新硬件特性、能更好地支撑分时及多用户体系的计算机,贝尔实验室在计算机发展早期就开发了自己的操作系统,因此麻省理工邀请了贝尔实验室与美国通用电气公司共同开发 Multics。
最终 Multics 的开发陷入了困境,Multics 设计了大量的程序及功能,经常塞入很多不同的东西进去,导致系统过于复杂。1969 年,由于在贝尔实验室看来作为一套信息处理工具,它已经无法为实验室提供计算服务的目标,它的设计太昂贵了,于是在同年 4 月,贝尔实验室退出 Multics 项目,只剩麻省理工和美国通用电气公司继续开发。
贝尔实验室退出 Multics 开发项目后,项目组成员 Kenneth Lane Thompson 找到一台 DEC PDP-7 型计算机,这台计算机性能不算强大,只有 4KB 内存,但是图形界面比较美观,Thompson 用他写了个太空游戏(Space Travel),PDP-7 有个问题就是磁盘转速远远低于计算机的读写速度,为了解决这个问题,Thompson 写了磁盘调度算法来提高磁盘总吞吐量。
如何测试这个新的算法?需要往磁盘上装载数据,Thompson 需要写一个批量写数据的程序。
他需要写三个程序,每周写一个:创建代码的编辑器,将代码转换为 PDP-7 能运行的机器语言汇编器,再加“内核的外层——操作系统就完成了”。
新的 PDP-7 操作系统编写没多时,Thompson 和几个同事讨论,当时新系统还没有名字,当时它被命名为“UnICS”(Uniplexed Information and Computing Service,非复用信息和计算机服务),UnICS 最后改名为 UNIX,这个名字更加方便记忆。
Unix-like 即类 Unix,亦即一切基于 UNIX 的操作系统,基本遵守 POSIX 规范,而没有获得第一节中所说的 UNIX 的认证。
也就是说,除了 Windows,基本上世界上大多数操作系统都被叫做 Unix-like,其中就包括 Linux 和 FreeBSD。
Linux 之名来自 Linux 之父 Linus Torvalds。
GNU/Linux = Linux kernel + GNU 等软件 + 包管理器
Linux 全称为 GNU/Linux;
具体地:
GNU/Linux 发行版 = Ubuntu、RHEL、Deepin、OpenSUSE……
Ubuntu = Linux kernel + apt/dpkg + Gnome
OpenSUSE = Linux kernel + libzypp/rpm + KDE
注意
上述操作较为复杂,需要一定的经验与基础知识。
FreeBSD 不是 Linux。
BSD 最初是由加州大学伯克利分校(University of California, Berkeley)所开发的,意为 Berkeley Software Distribution
(伯克利软件套件)。FreeBSD 未进行过 UNIX 认证,从版权角度来看,FreeBSD 的确不是 UNIX。但从历史来看 FreeBSD 可以被视为 UNIX 的直系后裔。
BSD 操作系统并非克隆产物,而是 AT&T 研究 UNIX(Research Unix)操作系统的开源衍生版本,也是现代 UNIX® System V 的祖先。
FreeBSD 官方的口号是 The Power To Serve
(服务的力量)。
忒修斯和雅典青年安全返航所乘的是有三十支桨的大帆船,雅典人把这只船一直保存到德米特里·法勒琉斯的时代。他们一次又一次地拆掉了朽烂的旧船板,换上坚实的新船板。从此以后,这只船就成为哲学家们就事物的发展问题展开争论时经常援引的实例,一派认为它还是原来那只船,另一派争辩说它已不再是原来的船了。
[古希腊] 普鲁塔克. 希腊罗马名人传[M]. 译者:黄宏煦 主编 / 陆永庭 / 吴彭鹏, 第1版. 商务印书馆, 1990-11. 第 23 页(23)。
最初,Unix 是 AT&T
开发的操作系统,可以获取源代码,但并非开源。在 20 世纪 70 年代末,伯克利大学的计算机系统研究小组(Computer Systems Research Group,CSRG)开始对 Unix 进行深入研究,并为其开发了大量用户空间的程序,形成了名为 BSD(Berkeley Software Distribution,伯克利软件套件)的新系统。随着时间推移,BSD 系统逐渐发展,加入了许多创新,比如实现了 TCP/IP 协议栈。尽管 Unix 内核经历了多个版本的演变,但到了 90 年代,Net/2 版本发布后,Unix 内核中的 AT&T 代码已经被完全替换,成为了一款没有专利代码的系统。BSD 系统逐渐演化成为 4.2BSD,BSD 4.4-lite……进而成为了 386BSD。
在此过程中,BSD 和 AT&T 之间的关系发生了变化,最终引发了法律争议,导致 BSD 系统的分裂。1993 年,BSD 的核心代码分裂为两个主要的项目:NetBSD 和 FreeBSD。1996 年,OpenBSD 从 NetBSD 中复刻出来;2003 年,DragonFlyBSD 从 FreeBSD 中复刻出来。
从历史与现实来看,macOS/iOS 等基于 BSD 确凿无疑,但并非全然基于某款 BSD:macOS/iOS 等应该被理解为一款独立的 BSD 操作系统——同 OpenBSD、NetBSD 和 FreeBSD 一样。参见
——
UNIX 标准 SUS 包含了 POSIX 标准,是其超集。Linux 实现了 POSIX 标准,但是未进行 。本质上说 Linux 最初是 UNIX 的一款仿制品。
项目 1990;
除外。
1984——GNU's Not Unix,从 GNU 这个名字(GNU 不是 UNIX)你也能看出来 Linux 与 UNIX 并无直接关联。
如果你还是不明白,建议亲自安装试试 (stage3)或 ,再不明白可以试试 或 。
FreeBSD 日为 6 月 19 日。FreeBSD 基金会和社区在这天庆祝 FreeBSD 的生日。——