一个月写出操作系统,到底经历了什么?

“如果不能在一个月内写出操作系统,那你就是个笨蛋!” ——说这话的人似乎就是个疯子,不过这确实是我当年的心理感受。 

01

伯克利大学播下的种子

        上世纪70年代,我坐在伯克利的一间教室中,上巴特勒·兰普森教授的操作系统课。

        当时的我不可能知道, 巴特勒·兰普森会获得1992年图灵奖,他的头上会笼罩上一堆耀眼的光环:

著名的XEROX PARC研发中心的创建者 

第一个个人计算机Alto的研发者

激光打印机,WYSIWYG(所见即所得),以太网(Ethernet),局域网(Local Area Network)等重要发明的参与者。 

我非常清楚地记得,兰普森在课上讲述了CTSS——世界上第一个分时操作系统——然后以他独特的方式问道:

“有没有人不能在一个月内写出CTSS?!”

没人举手。 

我也不敢举手,因为我觉得如果你不能在一个月内写出操作系统,那你就是个笨蛋。

兰普森在我心里埋下了一颗种子。 

02

去荷兰当教授

博士毕业以后,我面临一个选择:去工业界还是留在学术界?这时我想起了一件事:

有一年暑假,我去IBM实习(当然,是为了赚点钱),有一天我穿了一件颜色“不合适”的衬衫上班,我的同事告诉我这么穿是不对的,还提出了“改进建议”, 从那时开始,我就觉得不适合在企业界做事了。 

我的妻子是荷兰人,于是我就和她一起移居到了荷兰,在阿姆斯特丹的Vrije大学教书。其中有一门课就是操作系统。 

70年代Unix刚刚流行起来,AT&T最初把Unix和源码都提供给大学和科研机构,所以使用Unix进行教学是非常自然的选择。 

当时John Lions写了一本非常知名的书《莱昂氏UNIX源代码分析》。 

图片

这本书真是一行一行地解释Unix源码,受到大家的热烈欢迎!

可AT&T有些“精打细算”的人不喜欢这样,他们觉得:让全世界的学生来“围观”伟大的Unix源码是个非常可怕的主意,于是 Unix V7附带了一个License : 不能把V7 用于教学! 

我认为这可能是IT公司犯的最傻的错误! 

我想起了兰普森说的一个月写个操作系统的话,我为什么自己不写一个呢? 

03

操作系统的泥潭

我很喜欢阿姆斯特丹,这是一座宜人、宁静的城市,我很喜欢这里的天气,一年中大部分时间都是灰蒙蒙的,下着毛毛细雨,很适合在室内和温暖的电脑呆在一起。 

图片

我开始写一个和Unix V7兼容的操作系统,具体花了多长时间我有点记不清了,但是即将完成的时候,我和你们一样,遇到了一个难以复现的巨大Bug:它运行15分钟以后就会崩溃!

这真是让人大伤脑筋!无奈之下,我就写了一个具备跟踪调试功能的PC模拟器,让操作系统在这个模拟器中运行,每次崩溃,我就会查看最近的10万行指令,看看到底发生了什么。 

PC模拟器花费了我相当多的时间,如果我有商业头脑的话,应该把它做成产品,因为这就是未来的VMWare啊!

终于有一天,我的操作系统可以完美地在模拟器上运行了,永不崩溃。 

赶紧移到真正的硬件上执行,让我崩溃的是,它又开始间歇性地罢工了!

谁说一个月就能写个操作系统?!

就在我要放弃的时候,我的一个学生罗伯特告诉我:当Intel CPU变热的时候,会产生15号中断 。 

而我并没有捕获这个中断,因为CPU手册上并没有提到它。 

感谢罗伯特,他把我从泥潭中拉来出来,我只需要加上一小段代码,操作系统就可以稳定运行了。 

我决定把操作系统叫做Mini UNIX ,简称Minix。 

04

写书

Minix可以稳定工作以后,我就决定像Lions那样,写一本书,这样就Minix就可以用来教学了。 

这本书的每一章都有三个部分:

1.  讲述操作系统每个组件的通用设计原则

2. 这些原则是如何应用到Minix中的,以及关键的数据结构

3. 对源代码的详细描述

书名就叫做:

图片

如果你想获得源代码的话,可以从出版社Prentice Hall 单独购买,售价 69 美元, 包括10张软盘。 

69美元价格不便宜,但是也只是略高于制造成本,考虑到1987年Unix的大学教育许可证是300美元,商业许可证是28000美元,Minix第一次将一个类Unix的操作系统的成本降低到了学生可以接受到的水平。 

在发布后的几个月内,Minix成为了一个狂热的产品,拥有自己的USENET新闻组comp.os.minix,其中有40000名订阅者。

许多人开始缠着我改进它, 我每天都要收到200封电子邮件,内容大都是:“我需要一个伪终端,这周五就要!”,我的回答通常是:

“No”!

因为我想让Minix保持简单,这样学生们可以理解,我不希望Minix变成一个像Unix那样复杂的用于生产环境的系统。 

并且当时Unix的一个分支BSD非常稳定、成熟,有庞大的社区和追随者,所以我也没想让Minix进入这一市场,可是后来AT&T认为BSD侵犯了版权,对它发起了一场诉讼, 花了几年的功夫,这严重阻碍了BSD的发展。

在这几年中,有个叫Linus的芬兰小伙子购买了Minix源码,在上面玩得不亦乐乎,最后折腾出了一个全新的操作系统Linux, 伴随着互联网的大潮,全世界程序员都参与开发, Linux迅速发展起来,填补了免费Unix的空缺。 

Linux的故事参见《Linus : 我财务自由后,我却失眠了!

05

意外之喜

Minix的独特之处就是“微内核”:操作系统只有很小部分功能运行在核心态,大部分功能文件系统、内存管理等都运行在用户态

图片

这样,当某一部分出错的时候,可以轻松恢复。甚至在不停机的情况下,就可以完成操作系统组件的升级。 

这种特性对于高可靠的系统特别重要,如航空电子系统、喷气式战斗机、医院的呼吸机——系统失败就意味着有人死亡,其中大多数都是微内核

图片

前些年,有Intel的工程师联系我,问了我一些技术问题,还想让我对Minix 3进行一些针对性修改,后来我们就没有联系了。 

没想到, 后来爆出一个大新闻, 从2008年开始,Intel 居然把Minix用到了它的CPU的ME(Management Engine)管理引擎当中。

图片

这个ME相当于一个小型、低功耗电脑系统,运行在Ring -3  (Windows, Linux等运行在Ring 0), 我的Minix就驻扎在这里。

运行在Ring -3 的Minix 有一个网络堆栈、文件系统、很多驱动程序、甚至还有一个Web服务器! 

听起来是不是很可怕?怪不得Google努力地从自家服务器中移除Minix。 

不管如何,MINIX现在可能是世界上使用最广泛的x86电脑操作系统了。 

06

蝴蝶的翅膀

根据混沌理论,亚马逊的一只蝴蝶煽动翅膀,就可能引起美国海岸的一场飓风。 

如果当年罗伯特没有偶然地告诉我15号中断,就不可能有Minix。如果没有Minix,Linux也就不复存在。这样基于Linux的Android 也可能不存在, 现在苹果和三星的市值可能大为不同, IT界可能会走上另外一条道路。 

我是Andrew S. Tanenbaum。 

图片

你可能没有直接使用过Minix,但是应该读过我写的书:

图片

(完)

原文来自:

猜你喜欢

转载自blog.csdn.net/qq_41570658/article/details/120996938