重读经典《操作系统:设计与实现》

打印 上一主题 下一主题

主题 543|帖子 543|积分 1629

间隔第一次阅读《操作系统:设计与实现》,已经是 20 多年了。当时,差不多是 2002 年吧,我已经参加工作了。我大学不是学计算机的,因而也没有上过操作系统的课。第一次去上海,在上海图书馆看到这本书(中文版),就买了返来,读了许多遍。现在,书似乎找不到了,只记得是两本,一本是理论,一本是源代码。
我庆幸买了这本书。Linus Torvalds 说,这本书改变了他的一生。虽然这本书没有改变我的一生,但对我影响也很大。
“那年夏天我做了两件事。第一件事是什么都没做。第二件事是读完了719页的《操作系统:设计与实现》。那本赤色的简装本教科书差不多即是睡在了我的床上。”—— 摘自Linus Torvalds自传《Just For Fun》。
我喜好 UNIX 和 Linux,对书中讲得 MINIX 也布满了兴趣。我把它安装到我的电脑上,实验了许多功能,也读了许多源代码,算是对操作系统有了一知半解,也对 Linux 有了更深的认识。
然而,MINIX 照旧一个用于“教学”的系统,还不恰当一样寻常使用,当时的 MINIX 大概是 1.5 版。
“大多数关于操作系统的图书均重理论而轻实践,而本书则在这两者之间进行了较好的折中。” 这是那本书前言里的一句话,我也一直记得。我乃至也将这句话写进了我的书——《FreeSWITCH 权势巨子指南》的前言里。
MINIX 参考自 UNIX。最开始,UNIX 的源码都是开放的,各人都可以学习研究,大学里也可以讲 UNIX 的源代码。然而,到了 UNIX 版本 7 以后,AT&T 公司意识到了它的商业价值,就不再公开源代码了。学校里也不再答应讲 UNIX 的源代码。然而,没有源代码的操作系统课就像失去了灵魂。因而,做操作系统研究和讲操作系统课的 Andrew S. Tanenbaum 教授就自己写了一个操作系统——MINIX,名字取自 Mini-UNIX。
Linus Torvalds 就是在读了 MINIX 的源代码后,决定自己写一个操作系统,这就是 Linux。Linux 的源代码最开始就是开放的,基于 GPLv2 开源协议发布。
MINIX 的源代码也是开放的,但是有一些限制,不能用于商业用途。虽然这个限制后来被取消了,但 MINIX 似乎是错过了一个黄金时代。如今,Linux 已经风靡了天下。
不过,Andrew S. Tanenbaum 教授的志向却不在于此。MINIX 的源代码发布后,有无数人的都希望向 MINIX 贡献代码,以便让 MINIX 变得更好。但绝大部分都被拒绝了。由于 Tanenbaum 希望源代码足够简便,让学生们都能读懂;也要足够轻量级,能运行在“学生们都能买得起”的电脑上。
当然,MINIX 照旧取得了许多商业的成功。有许多嵌入式系统中都运行着 MINIX。你大概不敢相信,Intel 的 CPU 中就运行着一个隐藏的 MINIX 系统
我时不时地也会关注一下 MINIX。现在,MINIX 的版本已经是 3.0 了,有了很大的重构。我总是希望有朝一日我也可以用 MINIX 完成一些一样寻常的工作,不过,现在看来,离这个目标还有很远的路要走。其实我也希望能将 FreeSWITCH 移植到 MINIX 上,但这项工作还没有开始。
MINIX 支持 32 位的 x86 和 ARMv7 架构,尚不支持 64 位。MINIX 现在大概还重要应用于嵌入式领域。
MINIX 是微内核的操作系统,Linux 是宏内核的(单一内核)。为此,Tanenbaum 和 Linus Torvalds 曾经有过一场闻名的辩论,这场辩论被称为“Tanenbaum-Torvalds debate”。当时是 1992 年,Tanenbaum 说 Linux 的设计是错误的,在 1991 年还使用宏内核,就像倒退到 70 年代一样。但是这么多年过去了,Linux 的发展有了翻天覆地的变化,其宏内核也一直运行得很好。
大概微内核确实是好,Windows NT 也是微内核的。Mach 也一个微内核,最初是卡耐基梅隆大学的一个研究项目,后来被用于包括 NeXT OS、Mac OS X、GNU Hurd 等系统。但是,微内核的系统性能一直是个题目。在 Mac OS X 中,微内核架构也由于性能缘故原由被改写了:“However, in OS X, Mach is linked with other kernel components into a single kernel address space. This is primarily for performance”。
MINIX 3 比 MINIX 2 大约慢 10%,MINIX 3 也没有跟其他系统对比的数据。在 MINIX 3 的 FAQ 中,写道:“MINIX 只是花了几个人年的工作,而其他系统都耗费了成千上万人年的工作量。对 MINIX 而言,我们更注重可靠性,而不是性能。” 参见:https://wiki.minix3.org/doku.php?id=faq
What is the performance of MINIX 3 like?
We made measurements of the performance of MINIX 3 (user-mode drivers) versus MINIX 2 (kernel-mode drivers) and MINIX 3 is 5-10% slower. We have not compared it to other systems because there are so many other differences. The biggest difference is that MINIX 3 represents about a handful man-year of work so far and other systems represent thousands of man-years of work and our priority has been reliability, not performance.
虽然 MINIX 关于人年的比较有其道理,但是,从某种意义上说,相当于他们认可了微内核的性能确实有些题目。虽然性能不是唯一指标。
GNU Hurd 一直难产,大概跟微内核的复杂度也有关系。不过,为 Hurd 工作的人大概还不如为 MINIX 工作的人多。2008 年左右我在清华大学见过一次 Richard Stallman,当时就想问问他 Hurd 的进展,但由于当时英文太烂,没敢问。大概问了,但现在不记得了。
好了,扯远了。再回到《操作系统:设计与实现》这本书,为了写我的新书《大道至简,给所有人看的编程书》,我又有选择地读了一遍。这次读的是英文版第三版,图中的封面就来自于它。Tanenbaum 的英文写得很好,读起来真是上瘾。

原书里的内容有许多都不记得了,但是对哲学家就餐题目却印象很深。

第一版中还使用 Amsterdam Compiler Kit C 语言编译器,现在也换成 GCC 和 Clang 了。MINIX 1 兼容 UNIX V7,但现在 MINIX 3 现在也兼容了 POSIX 标准。当然,我也只是看了书。二十多年过去了,我再也没有使用过 MINIX。希望不久的将来,我能再用用它。
本文永久链接:https://www.dujinfang.com/2024/03/03/MINIX.html

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

商道如狼道

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表