No.424 Unix史前史

在分时操作系统成为主流之前,我们主要用的是两种操作系统:批处理系统和单道批处理系统。

想象一下,单道批处理系统就像是最早的邮局。你把一堆信件(程序作业)交给邮局,然后他们按顺序一封封处理。一次只处理一封信,其他的都得排队等着。这种系统简单是简单,但问题是,你得等很长时间才能收到回复(看到结果)。

然后,多道批处理系统就像是邮局升级了,能同时处理一堆信件。它们把信件分成小任务,快速地在这些任务之间切换,这样CPU(邮局职员)就很少闲着。这样一来,邮局的工作效率提高了,能处理更多的信件。但问题是,你还是不能和正在处理你信件的职员实时交流,因为系统没法即时反馈。

分时操作系统的出现,就像是邮局引入了即时通讯。它让多个用户(顾客)能同时和计算机(邮局)互动,而且很快就能得到回应。这种系统让顾客可以边写信(编程)边和邮局沟通,大大提高了效率和体验。

说到分时操作系统,我们得提一提CTSS,这是最早的分时操作系统之一,由麻省理工学院的计算机中心搞出来的。费南多·柯巴托是这个项目的领头人,他在计算机科学界的贡献可大了。费南多·柯巴托因其在计算机科学领域的杰出贡献而获得了多项荣誉和奖项,包括图灵奖(ACM Turing Award),这是计算机科学界的最高荣誉。他的工作和成就被广泛认为是现代计算技术基石的一部分。遗憾的是,费南多·柯巴托于2019年去世,但他的遗产和影响力继续在今天的计算机科学和工程领域中发挥作用。

CTSS是在1961年开始开发的,目的是让多个用户能同时用计算机,就像大家围着一台咖啡机聊天一样。这个系统很先进,引入了很多我们现在操作系统里还在用的概念,比如时间片轮转和内存保护。

CTSS只在麻省理工和另一个叫MAC的计划里用过,但它对后来的操作系统影响深远,特别是在分时和多用户系统设计上。它不仅展示了分时系统的强大潜力,还为后来的操作系统设计提供了宝贵的经验。

不过,麻省理工后来有点得意忘形了。他们想做一个更牛的系统,叫Multics,意思是“多路复用信息和计算服务”。这个项目野心勃勃,想要做出比IBM 7094还强悍的硬件,还有更先进的软件。他们甚至拉来了通用电气和贝尔实验室这两家大公司帮忙。

但Multics项目很快就遇到了麻烦。可以说是“第二系统效应”的典型案例——就是说,第一个系统成功后,人们想做一个新系统,解决旧问题,加上所有新功能,结果往往搞得太复杂,难以驾驭。Multics就是这样,很多人都说它“过度设计”,用萨姆·摩根的话说,就是“试图同时攀爬多棵树”。

所以,虽然CTSS和Multics都是计算机史上的重要里程碑,但它们也提醒我们,在追求创新的同时,还得注意保持系统的简洁和实用性。

咱们来聊聊那个时代的一些计算机大佬们。在1966年到1969年那段时间里,贝尔实验室有那么六七个研究员,比如道格·麦基尔罗伊、丹尼斯·里奇、肯·汤普森,还有彼得·诺伊曼,他们都在忙活一个叫Multics的项目。维克·维索斯基走后,彼得就接了他的班。道格那时候可是一心扑在Multics上,想在上面搞个PL/I编程语言。丹尼斯呢,还在哈佛读书的时候就给Multics写文档了,后来到了贝尔实验室,又搞起了输入输出(I/O)子系统。肯也是,他那时候全心投入到I/O子系统里,这段经历后来在他搞Unix的时候帮了大忙。肯自己都说,他在Multics上干的活儿,就像是“巨轮上的一道凹槽”,意思是那东西复杂到连他自己都用不下去。

到了1968年,虽然对那些少数能用上它的人来说,Multics还算是个不错的计算环境,但贝尔实验室觉得,这玩意儿作为信息处理工具,太贵了,而且也实现不了用合理成本提供计算服务的目标。所以到了1969年4月,贝尔实验室就退出了Multics项目,剩下麻省理工和GE还在那儿继续努力。

最后呢,Multics还是搞出来了,至少是宣布成功了。一直到2000年,虽然它没变成主流,但还是有人支持和用它。Multics有很多好主意,但它最持久的贡献可能谁也没想到:它竟然影响了一个叫Unix的小操作系统。Unix诞生的原因之一,就是想摆脱Multics那种复杂的架构。这事儿挺有意思的,有时候历史就是这么充满意外。

UNIX的起源

再来聊聊贝尔实验室退出Multics项目后的事儿。那时候,肯·汤普森还想继续搞操作系统,但是管理层对Multics那玩意儿已经彻底失望了,死活不愿意再投钱买新硬件。所以肯和团队就只能在纸上画画,设计设计操作系统的各个部件,但实际动手做是没门儿了。

就在这时候,肯发现了一台几乎没怎么用过的DEC PDP-7计算机。这玩意儿主要是用来做电路设计的工具。PDP-7是1964年出的,但到了1969年,已经算是老古董了。这台机器内存只有8K,但显示效果还挺好看的。肯就心血来潮,给这机器写了一个太空旅行的游戏,玩家可以在太阳系里到处逛,挺上瘾的,都玩了好几个小时。

PDP-7还有个挺有意思的部件——它的磁盘驱动器,看起来就像是个高高的架子上放着个磁盘,听说要是磁盘飞出来,站在前面的人可得小心了。因为磁盘转速比计算机读写速度快多了,肯就搞了个磁盘调度算法,提高了磁盘的使用效率。这个算法虽然后来在别的磁盘上也能用,但最初是为PDP-7的磁盘量身定做的。

那怎么测试这个算法呢?得往磁盘上写数据啊。肯觉得得有个程序能批量写数据。

就在这个时候,肯的老婆邦妮带着一岁的儿子去加利福尼亚看望父母,肯就有了三周的清静时间。他后来在2019年的一次采访中回忆说,“一周,一周,再一周,Unix就这么诞生了。”这效率,真是没谁了。

有人问肯,真的三周就搞出一个操作系统来吗?肯回答说,Unix最初是为了测试文件系统的吞吐量。后来发现,想给系统加点负载挺难的,只能在循环里读读写写,复杂操作就搞不定了。这就是邦妮去圣迭戈的时候,肯面对的情况。他说,Unix其实已经挺接近分时系统了,就是还缺了几个关键的东西,比如执行调用、shell、编辑器和汇编器。没有编译器,执行调用就手到擒来。其他的,每周搞定一个,正好是邦妮不在的那段时间。

早期的Unix只有一小撮用户,包括肯、丹尼斯、道格·麦基尔罗伊、鲍勃·莫里斯、乔·奥桑纳,还有我。每个用户都有一个数字ID,有的代表系统功能,比如超级用户,ID是0,普通用户从4开始。丹尼斯是5,肯是6,是9。能在最初的Unix系统里有个位数的用户编号,那可真是挺有面子的。

Unix的命名

在新PDP-7操作系统刚刚诞生的时候,它还没有一个具体的名字。据说,有一天,几个人站在办公室门口讨论着这个系统,其中包括肯、丹尼斯和彼得·诺伊曼。那时候,系统还处于无名状态。

在那次讨论中,有人提出了一个建议,认为既然Multics系统旨在提供全面的功能,那么他们的新系统应该采用更为简洁的命名方式。他建议使用拉丁词根“uni”来替代“multi”,将系统命名为“UNICS”。

另有说法认为,这个名字是彼得·诺伊曼想出来的,意为“简单直接的信息与计算服务”(UNiplexed Information and Computing Service)。彼得回忆起有一天肯来吃午饭时提到,他整晚都在为迈克斯·马修斯使用的PDP-7编写了一个几千行代码的单用户操作系统内核。彼得建议肯将其改为多用户系统,而第二天肯果然带来了支持多用户内核的代码。正是这个单用户内核激发了UNICS这个“简化版Multics”的概念。

彼得谦虚地表示他记不太清更多的细节,因此,不管是否应该,命名系统的荣誉就被归功于他了。

随着时间的推移,UNICS这个名字最终演变成了Unix,这个名字显然更加响亮和易于接受。据传,AT&T的律师们对“Unics”这个词有所保留,因为它听起来与“太监”(eunuchs)相似。丹尼斯·里奇后来描述这个名字直击Multics的要害,确实,这个名字的选择非常巧妙。

eunuchs宦官,太监。是的,外国历史上确实存在过太监。太监这一角色并不局限于中国,而是在多个古代文明中都有出现。在不同的文化和历史背景下,太监的角色和地位各不相同,但他们通常在宫廷中扮演着重要的角色,负责各种内务和侍奉皇室。

例如,在古埃及,太监被用于宫廷服务,特别是在后宫中,他们的职责包括浇花、锄地、泡茶、倒水等。在波斯,太监被称为“阉奴”,不仅服务于皇室,还被用作贸易和外交的贡品。在罗马帝国,太监被称为“宦官”,他们在宫廷中的地位很高,有时甚至参与政治。

在西方,太监制度的结束时间比中国早。大约在17世纪中叶,西方的太监制度逐渐消失。据资料显示,太监在西方历史上存在了约3064年,而中国古代的太监历史则更长,大约有3513年。

值得注意的是,太监制度的消失并不意味着这些个体完全从历史中消失,他们的影响和故事仍然在不同文化中流传。例如,奥斯曼帝国的后宫中就使用了大量的黑人太监,这些太监多数来自努比亚的奴隶。总的来说,太监是全球多个文明共有的历史现象,他们的存在反映了古代社会对宫廷服务和管理的特殊需求。随着社会的发展和人权观念的提升,这一制度最终被废弃。

0 0 投票数
文章评分
订阅评论
提醒

1 评论
最旧
最新 最多投票
内联反馈
查看所有评论
六个九十度
8 月 前

太监原来这么普遍,看来这个生态位一直存在。

1
0
希望看到您的想法,请您发表评论x
滚动至顶部