因为要玩LINUX,不可能不知道LINUS ,
因为要学操作系统,不可能不知道Andrew S. Tanenbaum,
(WZG叫着去吃饭了,回头继续写)
接着:
在Andrew S. Tanenbaum的<<现代操作系统>>一书的引论中有这么一句话:“对UNIX版本的免费产品(不同于教育目的)的渴望导致芬兰学生Linus Torvalds编写了LINUX,这个系统在MINIX上开发,而且原本支持各种MIIX的功能 (如MINIX的文件系统)。尽管它已经通过多种方式扩展,但是该系统底层仍然保留了大量与MINIX和UNIX共同的结构(前者是基础)。”我刚读到这句话的时候想,哦,LINUS能写出LINUX,也许得到了很多Andrew S. Tanenbaum的指导,最近在网上看到LINUS与Andrew S. Tanenbaum论战的字样,不由得吓了一跳,于是就想看个究竟,这两个人干起来那应当很精彩,但我在网上并没有找到比较完整一点的翻译档来,有一个竟然说“原方太长了,等谁有空了翻译给大家看”,靠,感情谁都没空,所以我只有啃英文档了,我英语又不好,下面是我的理解译文,有高手帮忙指点下有没有大的错误。
英文档可见:http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html
1992年 1月29 日中午 12点 12分,Andrew S. Tanenbaum(ast)的一个 post“LINUX is
obsolete”引起了这次论战:
退化的LINUX
Andy Tanenbaum
From: [email protected] (Andy Tanenbaum)
Newsgroups: comp.os.minix
Subject: LINUX is obsolete
Date: 29 Jan 92 12:12:50 GMT
Organization: Fac. Wiskunde &h; Informatica, Vrije Universiteit, Amsterdam
过去的两周内我呆在美国,所以我没有对LINUX做出过多的评论(not that I would have said much had I been around,)但正是如此的原因,我现在有更多的话要说。
正如大多数人所知,对我而言MINIX是一个业余爱好,是当我晚上写作感到疲惫并且CNN(-译者注:美国有线新闻网络, 以提供即时电视新闻报导而闻名)上没有大规模的战争,革命,或者参议院听证(senate hearings)的报导的时候做的事情。我的正式工作是在OS领域的教授以及研究人员。
由于我的工作的原因,我自信我会知道一些关于在下一个时期OS将会向哪儿发展以及其它一些的事情。这儿有两个突出的问题:
一:Microkernel vs Monolithic System(微内核 vs 巨内核)
大多数的老的OS都是集成式系统(Monolithic System),就是说,整个操作系统就是一个工作在内核模式下的a.out文件。这个二进制的“文件”包括了进程管理,内存管理,文件系统以及剩余的一切。这样的系统比如:UNIX,MS-DOS,VMS,MVS,OS.360,MULTICS,以及等等。
另一种就是基于微内核的系统,其中大多数的OS部分就像单独的进程一样运行,并且大多数操作系统进程工作在内核以外。它们通过消息传递来互相通信。内核的工作是处理消息传递,中断处理,低级进程管理,也可能管理I/O。这种设计的例子有RC4000,Amoeba,Chorus,Mach,以及尚未发布的Windows NT。
当我在这儿做关于两种设计的价值关系的讨论的时候,那些实际真正上做OS的人显然已经在说,竟争早就结束了。微内核系统已经胜出了。对集成系统来说唯一拿得出手的论据就是性能,但现在已经有足够的证据表明微内核系统可以运行的像集成系统一样的快(例如Rich Rashied 已经发表了对于Mach 3.0 与集成系统的比较论文),所以现在除了争吵一切都已成定局。
MINIX是一个基于微内核的系统。它的文件系统各内存管理都是独立的,运行于内核之外的进程。I/O驱动也是独立的进程(是在内核之中,但这仅仅是因为Intel cpu的无能特性导致的,如果不那样做将会很困难)。LINUX是一个集成式系统。这是一个极大的向1970s的退化。这就像是把一个C程序用BASIC(-译者注:这里应该是指"比尔该死"刚出道时写得那个东西吧,不过千万不要跟VB混淆,也不知道写这文章那时候还有没有VB呢,不过还是说一下为好)重写了一样。我认为,在1991年写一个集成式系统的确是一个糟糕的主意。
二:Portability (可移植性)
以前有一种4004CPU,当它稍微发展后就成了8008。然后遭受了一个“外科整形”就成了8080。由它又发展出了8086,发展出了80286,发展出了80386,发展出了80486,等等等等直到第N代。在这期间,RISC芯片出现了,并且它们当中有些以100多MIPS(-译者注:Million Instructions Per Second, 每秒百万条指令)的速度运行。在最近的几年内实现200MIPS的速度甚至更多是有可能的。这些东西不会一下子消失。将要发生的事情是它们会逐渐地取代80x86系列。(译者注:就目前来看,AST的预言好像并未成为事实)它们可以通过用软件模拟80386体系来运行旧的MS-DOS程序(我甚至用C写了一个我自己的IBM PC模拟器,你可以从ftp.cs.vu.nl = 192.31.231.42 的minix/simulator目录下得到它。)我认为这是一个总的错误去为一个具体的体系结构设计OS,因为一个体系结构并不能长久存在下去。
MINIX是设计为可移植的,并且已经被从INTEL系列上移植到680x0(Atari,Amiga,Macintosh),SPARC,以及NS32016。LINUX是过于靠近80x86架构,这不应该是它应走的路线。
请不要误会我,我不是不喜欢LINUX。它的确使那些想把MINIX换成BSD UNIX的人放弃了MINIX。但是老实说,我还是建议想要得到一个modern,"free"的OS的人在基于微内核的,可移植的系统中寻找,也许比如 GNU 或者其它类似的东西。
Andy Tanenbaum ([email protected])
附笔:顺便说一下, 现在有个UNIX下的模拟器(在用户空间运行)Amoeba,还很远不够完善。如果谁想跑它,告述我一声。跑Amoeba要有几台386,其中一台至少要有16M内存,所有机器都用WD以太网卡。
(译者注:为什么AST说是“跑Amoeba要有几台386”,这因为Amoeba是他写的一个分布式的操作系统,现在它已经发展到了5.3版本,是一个完全免费的OS,关于Amoeba的最新,最详细的消息可以参考这儿http://www.cs.vu.nl/pub/amoeba/)
当晚 11点 Linus就做出了态度强硬而又激动的回复。
Linus Benedict Torvalds
From: [email protected] (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: 对“LINUX is obsolete”的回复
Date: 29 Jan 92 23:14:26 GMT
Organization: University of Helsinki
Well,既然有这么一个主题,那么我恐怕不得不回复一下。一次向已经听够了关于LINUX种种的MINIX用户的道歉。我很想能够仅仅是“忽视这种抨击”,但是......该是释放一下火气的时候了。
在<[email protected]> [email protected] (Andy Tanenbaum)中写到:
“过去的两周内我呆在美国,所以我没有对LINUX做出过多的评论(not that I would have said much had I been around,)但正是如此的原因,我现在有更多的话要说。
正如大多数人所知,对我而言MINIX是一个业余爱好,是当我晚上写作感到疲惫并且CNN(-译者注:美国有线新闻 网络, 以提供即时电视新闻报导而闻名)上没有大规模的战争,革命,或者参议院听证(senate hearings)的报 导的时候做的事情。我的正式工作是在OS领域的教授以及研究人员。”
你要用这个当做是MINIX充满局限的借口?对不起,但是你输了:我可以有比你更多的借口,并且LINUX仍然在几乎所有的方面击败了MINIX。更不要说了,PC MINIX中大多数好的代码还是Bruce Evans写的呢。
RE1:你说你只把MINIX作为一个爱好来做-但是看看倒底是谁在拿MINIX赚钱,又是谁免费发布LINUX。然后再说什么“爱好”如果把MINIX做成免费的,那么我最大的抱怨就不复存在了。LINUX才是真正的我的业余爱好,(但是严肃的来说:它最好的形式):我没有从这儿得到一分钱,并且它甚至不是我大学学业的一部分。我在完全属于自己的时间,自己的机器上完成它。
RE2:你的职业是一名教授以及研究人员:这倒是一个该死的对于那些只有脑子有问题的人才写得出来的MINIX代码的好借口。我只能希望(并且假设)Amoeba不要像MINIX那样糟糕。
1: MICROKERNEL VS MONOLITHIC SYSTEM
对,LINUX是集成式系统,并且我也同意微内核要好一些。做为较少争议的话题而言,就这方面我几乎同意所有你说的东西。从理论的(以及美学的)角度来说LINUX是有点失败。如果GNU内核去年春天就完成了,那我也不用麻烦得去做我的这个项目:事实是它没有,直到现在。LINUX在实用性上来说现在十分的成功。
MINIX是一个基于微内核的系统。[这儿删除了,但不会导致你理解失误]LINUX是一个集成式系统
如果这是评价一个内核的好坏的唯一标准,你会是正确的。你没有提及的一个事实是MINIX并没有做好微内核应该做好的事,并且在多任务(在内核中的)处理上仍然有问题。如果我做了一个在多线程的文件系统方面有问题的OS,我决不会这么快的就去指责别人:事实上,我会尽力让人们忘记那些失败之处。
[是的,我知道在MINIX中有多线程的痕迹,但仅仅是痕迹,并且Bruce Evans告诉我有许多问题要处理。
2:PORTABILITY
“可移植性是对那些写不出新程序的人而言的”
-我,现在(以傲慢的口气)
事实是LINUX比MINIX更加容易移植。什么?我听你说。这是一个事实-但是在一个AST并非如此用意的情况下:我尽我自己所知把LINUX做的尽可能的靠近标准(在我面前没有任何POSIX标准)。向LINUX的移植通常要比向MINIX移植容易得多。
我同意移植性是一个好事情:但是只在事实上有意义的地方。没人想做一个过度可移植的操作系统:依附于一个可移植的应用程序编程接口是足够好的。操作系统是为了利用硬件特征,把它们隐藏在一系列高层调用的后面。LINUX就是那样做的:它只是利用相比于其它内核看上去更大的一个386特性的子集。当然这使得内核彻底的不可移植,介是它确实是一个相当简单的设计。一种可接受的平衡,它使得LINUX的实现在第一个平台上成为可能。
我还同意LINUX把不可移植性做到了极致:我去年一月份买了一台386机器,并且LINUX是教会我如何使用它的工程的一部分。如果当初这是一个真正的项目的话,许多东西都要做得更具可移植性。但我并不是在为这个找过多的借口:这是一个设计决策,在去年4月份当我开始做这些事的时候,我认为没有人会事实上来使用它。我很高兴做出我想错了,因为我的源代码可以免费使用,任何人都可以试着把它移过去,尽管这并不是很容易。
LINUS
PS:我为某些听起来有点刺耳的东西致歉:MINIX是足够好的,如果你没有别的选择的话。Amoeba也会很好,如果你身边有5-10台空闲的386机器的话,我是肯定没有的。我很少激动,但是当涉及到LINUX时我火气有点大。
Andy Tanenbaum
From: [email protected] (Andy Tanenbaum)
Newsgroups: comp.os.minix
Subject: Re: LINUX is obsolete
Date: 30 Jan 92 13:44:34 GMT
Organization: Fac. Wiskunde &h; Informatica, Vrije Universiteit, Amsterdam
在<[email protected]> [email protected] (Linus Benedict Torvalds)中写到:
“你拿作为一个教授来当做对MINIX的种种局限的借口?”
MINIX的局限至少部分涉及到我是一名教授:一个清楚的设计目标是为了让它运行在便宜的,学生们可以支付起的硬件之上。特别的,它在一台4.77MHZ的,没有硬盘的电脑上运行了好几年。你可以在这儿做每件事情,包括修改并且重新编译系统。只是为了记录,到1年前为止,它有两个版本,一个运行在 PC(360K硬盘)上,一个运行在286/386(1.2M)。PC版本卖得比286/386版本多1倍。我并没有具体的数字,但是我的猜测是-
(-未完待续-)
另外还有LINUS与Tanenbaum.的一些事情我也会译了来放在这儿。应该在最近吧