探索Linux内核飞行十二年

Linux诞生的十二年,是其不断寻求发展的十二年,是经历各种磨练的十二年,也
是逐渐成熟、逐渐清晰的十二年。

十二年一轮,只是历史长河中的短短一瞬。Linux用2.6版内核开启了其新一轮的发
展,我们则将以对Linux十二年的回顾来揭开Linux内核的神秘面纱。

我没有从头开始经历Linux发展的所有大事,只是想从一个Linux用户的角度来描述
一下Linux十二年成长经历中的点滴。

正因为如此,我的资料都来自于互联网。尽管年代已久远,但是广阔的互联网空间
仍然随处可见Linux诞生以来的点点滴滴。将它们收集起来,Linux十二年的发展逐
渐在眼前展现。

Linux诞生记

目前公认,Linux诞生于1991年8月29日,一切从下面这封邮件的发出开始。

Newsgroups: comp.os.minix

Subject: What would you like to see most in minix?

Summary: small poll for my new operating system

Message-ID: <1991Aug25.205708.9541 @klaava.Helsinki.FI>

Date: 25 Aug 91 20:57:08 GMT

Organization: University of Helsinki

Hello everybody out there using minix -

I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones. This has been brewing
since april, and is starting to get ready. I'd like any feedback on
things people like/dislike in minix, as my OS resembles it somewhat
(same physical layout of the file-system (due to practical reasons)
among other things).

I've currently ported bash(1.08) and gcc(1.40), and things seem to
work.This implies that I'll get something practical within a few months,
 and I'd like to know what features most people would want. Any
suggestions are welcome, but I won't promise I'll implement them :-)

Linus (torvalds@kruuna.helsinki.fi)

PS. Yes - it's free of any minix code, and it has a multi-threaded fs.It
 is NOT protable (uses 386 task switching etc), and it probably never
will support anything other than AT-harddisks, as that's all I have :-(.
 

上面这封邮件的译文如下:

各位使用Minix的朋友们,大家好。

我正在为386(486)的兼容机做一个自由的操作系统。它仅仅是一个业务爱好,不
会很大,也不像GNU那么专业。从4月开始我就着手于这项工作,现在差不多就要完
成了。我欢迎任何喜欢或不喜欢Minix的朋友能给我反馈,因为在某种程度上我的
这个操作系统和它很像。比如,它们都使用了相同的文件系统物理组成(这是由实
际情况所决定的)。

目前我已经将Bash 1.08和GCC 1.40移植到这个操作系统上,它们都能够正常地工
作。这意味着在这几个月的努力下,我终于完成了一些实际的东西。我很想知道对
于这个操作系统,大多数人到底需要哪些功能和特性。我欢迎各种建议,虽然我并
不敢保证能够实现它们。

Linus (torvalds@kruuna.helsinki.fi)

又及:这个操作系统从Minix代码而来,有一个多线程的文件系统。它不具备很好
的灵活性(使用了386的任务切换机制),而且因为我所拥有的资源有限,它也许
永远都不能支持除了AT硬盘之外的东西。

文中提到的Minix是一个微型的Unix操作系统,完全免费且源代码公开。作者是荷
兰的Andy Tanenbaum教授。他编写这个操作系统的目的是为了教学和演示,因此他
一直拒绝在Minix中加入不必要的特性而使其变得复杂。但是很多爱好者们热衷于
改进Minix,Linus Torvalds就是其中的一个。

现在再看这封信,谁能想到它对今后十多年中IT业造成的冲击呢?

如果注意到1991年时Linus的许多邮件,我们会发现那个时候的他并不是现在这样
的一个顶级开发高手。那时候的Linus只是一个OS新手,他自己也在回忆录中承认
,当时向很多人请教了很多基本的问题。

谁又能说十二年后不会再出现这样一个传奇呢?

十年磨一剑

1991年11月,Linux 0.10版本推出。早期的Linux只有很少的一些程序,直到0.11
版本,Linux仍然缺少init/login、rename system call、named pipes、symbolic
 links这些基本的特性。0.12版本之后,版本号直接跳到了0.95,Linux开始逐渐
接近一个真正成熟的系统。

Linux开发的版本号惯例是,中间的数字为偶数代表稳定版,中间的数字为奇数代
表开发版。因此到目前为止,Linux经历了以下几个稳定版本,他们的版本号和维
护者分别如下:1.0.x;1.2.x;2.0.x由David Weinehall负责维护;2.2.x由
Alan Cox负责维护;2.4.x由Marcelo Tosatti负责维护。

直到2003年12月18日推出Linux 2.6.0,由Linus Torvalds亲自负责维护。

微内核与巨内核之争

Linux以一种难以置信的速度流行起来。在它高速发展的历程中,不能不提到著名
的Linux是否过时之争。双方当事人恰恰就是Linus和Minix的作者Andy Tanenbaum
教授。在这次争论中,双方对操作系统的很多方面都进行了深入的讨论,至今看来
仍然很有意义。

最先发难的是Andy Tanenbaum教授。1992年1月29日,他在题为“Linux is
obsolete”的E-mail中说到了对未来一段时间内操作系统发展的观点。

(1)是微内核还是巨内核

传统的操作系统使用的都是巨内核结构。这意味着操作系统是一个整体可执行文件
,进程管理、内存管理和文件系统全部运行在内核模块中。而目前较新的一种设计
方式是微内核,操作系统的大多数部分作为独立的进程运行,存在于内核以外,内
核通过消息传递、中断处理、低级进程管理,以至于I/O来完成各种工作。

他认为微内核明显优于巨内核,而Linux使用的恰恰就是巨内核。Andy Tanenbaum
教授认为这是历史的倒退,相当于在20世纪90年代仍然使用70年代的技术。

(2)灵活性(Portability)

Andy Tanenbaum教授还认为,不应该对于一种特定的体系机构编写操作系统,因为
体系结构的进化是非常快的,这样将导致移植非常困难。目前的Linux过于依赖
80386架构,而这样显然是不对的。

之后Linus在回复的邮件中承认,微内核的确好一些,至少在理论上是这样。但是
Linus认为在当时拥有一个可用的操作系统更加重要。他说,如果前一年的春天
GNU的内核Hurd推出的话,那Linux就没有存在的必要了。Linus认为,不能仅仅用
是否是微内核作为评论操作系统优秀与否的标准。

Linus说的是很重要的一点。微内核模式在开发和调试上都带来了一定的难度,这
也许是Hurd迟迟不能推出的一个重要原因。在很久以后的Revolution OS记录片中
,GNU的主教Richard Stallman承认,Hurd各部分之间的配合和调试是个大问题。
也许Linus的确有远见。他认为应该迅速推出能用的系统,而不是在做了最优化设
计之后再推出系统,这个观点值得我们深思。

对于灵活性,Linus认为只是某些不愿意写新程序的人的借口。他认为事实上由于
POSIX标准的缘故,Linux比Minix更具灵活性,因为往Linux上移植程序会更加方便
。灵活性是一个好主意,但是过犹不及,OS应该最大限度地利用架构的特点,这样
会让开发变得更加容易。

后来双方又进行了很多争论,涉及到不少技术细节,也有不少别的人参与进来,他
们说的话对于想学习OS的人很有启发意义。

今天的Linux已经不能简单地说是一个微内核系统或巨内核系统了,它同时具有这
两种系统的不同特点。不过我们可以看到,正是像上面这样的讨论,构成了今天这
一庞大的OS理论基础,这也正是Linux自由、开放的精神所在。

转贴自开放系统世界。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值