zoukankan      html  css  js  c++  java
  • [导入]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自由、开放的精神所在。

    =================================================================
    最近也写个中型网站的后台,主要是房地产方面的!今年可能是完成不了,也没太多时间自己学其它的东西了,收集些有用的东西上来,以后再看看!
    ==================================================================


    文章来源:http://computer.mblogger.cn/wucountry/posts/22237.aspx
    ================================
      /\_/\                        
     (=^o^=)  Wu.Country@侠缘      
     (~)@(~)  一辈子,用心做一件事!
    --------------------------------
      学而不思则罔,思而不学则怠!  
    ================================
  • 相关阅读:
    SQLServer学习笔记系列1
    结束回忆的2014,带着精彩奔向2015!
    sql重置自增长
    回首一年的骚动岁月
    IIS7.5上的REST服务的Put,Delete操作发生HTTP Error 405.0
    Javascript学习笔记1
    C#基础回顾(三)—索引器、委托、反射
    C#基础回顾(二)—页面值传递、重载与重写、类与结构体、装箱与拆箱
    C#基础回顾(一)—C#访问修饰符
    SQL连接
  • 原文地址:https://www.cnblogs.com/WuCountry/p/305872.html
Copyright © 2011-2022 走看看