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@侠缘      
     (~)@(~)  一辈子,用心做一件事!
    --------------------------------
      学而不思则罔,思而不学则怠!  
    ================================
  • 相关阅读:
    区别@ControllerAdvice 和@RestControllerAdvice
    Cannot determine embedded database driver class for database type NONE
    使用HttpClient 发送 GET、POST、PUT、Delete请求及文件上传
    Markdown语法笔记
    Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
    Mysql 查看连接数,状态 最大并发数(赞)
    OncePerRequestFilter的作用
    java连接MySql数据库 zeroDateTimeBehavior
    Intellij IDEA 安装lombok及使用详解
    ps -ef |grep xxx 输出的具体含义
  • 原文地址:https://www.cnblogs.com/WuCountry/p/305872.html
Copyright © 2011-2022 走看看