• 2005-11-30

    读《自己动手写操作系统》

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/dreamhead-logs/1653638.html

    用一个月左右的时间读了《自己动手写操作系统》,这是一本让人读着很过瘾,却也特别累的一本书。

    对操作系统的兴趣由来已久,只是一直未能找到入门之径。操作系统教材是个令人生畏的东西,它可以告诉人有什么,却不能告诉人为什么,从那里了解的操作系统有如盲人摸到的象,得到各个部分,却不能拥有整体,加之缺乏实践的支持,理论显得苍白空洞。如Linux般的开源操作系统,虽然可以让人坐拥全部源码,但一来规模庞大,让人不知从何入手,二来源码背后更多的是业务——操作系统和硬件知识,不了解业务的人很难凭一己之力破解源码的奥秘。客观如此,更重要的还是主观的不努力。

    《自己动手写操作系统》则为如我一般挑剔的人打开了一扇门,从一点一滴的小处着手,一步步构建出一个简陋的操作系统雏形——Tinix,虽然它还不具备任何实际的价值,甚至算不上一只五脏俱全的麻雀,但对于想走近操作系统的人来说,这已经足够了,如果能够随着它一路走来,至少可以具备更进一步的基础,再去遨游广阔天地,便不会迷失于庞杂的理论与源码之中。

    这本书的名字给人的提示是,它是一本以实践为基础的书,因此,阅读之初我便给自己定下了步步紧跟的策略。照着书敲代码也难免出错,再者书中有一些遗漏,只有对比光盘中提供的源码才能发现其中的细微之处,所以,常常是一段代码要花相当长的时间进行调试。实践证明,这种方法需要花费相当的精力,这也是我为什么会认为读这本书很累的原因。但是这种做法对于理解书中内容大有裨益。看明白,做一遍,调试,这是几个截然不同的境界。很多细节的东西,只有经过调试才能发现。即便是自己编写的代码,如果没有经过调试,恐怕也难说真正的理解。

    作者在后记中写到,这本书最大的价值在于,它让操作系统的实现这个问题变得具备“可操作性”。正是因为这样,我才可以追随它一步步走来。在这点上,我读到第三章《保护模式》就已经体会颇深了。我曾经读过很多关于保护模式的内容,不过,由于缺乏实验,我只是了解一些概念,却不曾深刻体会。在第三章中,通过一个个简单的小例子,切换至保护模式,设置GDT和LDT,使用分页,中断处理等等书本上的概念活灵活现的展现在我的面前,那些艰涩的概念一下子便得再简单不过了。

    市面上关于源码剖析的书很多,但是,即便像侯捷先生这样教育大家编写的《深入浅出MFC》、《STL源码剖析》大多数情况下也只是讲了怎么做,而无法说出为什么,原因很简单,这些书是站在旁观者的角度看问题,而很多问题只有开发者才是真正理解的。所以,这些源码剖析的书有其价值,但深度上还存在相当的欠缺。这本书的作者恰恰是站在了开发者的角度来讨论问题,所以,我们有机会看到了一个思考的过程,而不仅仅是一个结果。这一点从第六章《进程》中时钟中断处理程序的一步步进化便得以管中窥豹。

    不得不提一下的是作者的写作功力,读过了许多生涩的技术书籍,这本读起来很舒服的书倒显得有些另类。它属于我心目中期盼的那种“形神兼备”的好书,正是作者相当不错的表达,才是这本书让人享受技术的同时又可以体味阅读的乐趣。当然,其中还是有些技术细节让人昏昏欲睡。

    读书,首先要找到适合自己的书,这样我们才能从中有所收获,毕竟,技术书籍中很少能够找到满足所有层次需要的书。《自己动手写操作系统》的定位是一本入门书,显然,它不适合已经过了这个阶段的人,如果因此埋怨这本书档次太低,那就怪不得旁人,因为自己走错了路。

    如果你和我一样,对操作系统有兴趣却不得门径,不妨《自己动手写操作系统》。

    分享到:

    历史上的今天:

    感受澳洲 2012-11-30
    引用地址:

    评论

  • 操作系统设计
    http://www.upwardit.com/ShowSpecial.asp?SpecialID=1
  • 写吧,赶快写吧,今天的系统又崩溃了,什么时候才能用行正版啊!!~我的kugo.
  • 我也是靠这本书开始入门的,应该说,此书功不可没,但是从下半本开始,作者代码组织开始混乱,自己跟MINIX东西交织在一起,看得很累
  • 搂主真是神速阿,我读了一年看完。
  • 楼主,我也已经读了一遍。大致上懂了一些,现在在调书中提供的代码。遇到了不知道用那种调试器的问题,是用windows上的nasm还是LINUX上的DDD。
    现在还没找到好的调试工具,很多时候只是把作者提供的代码运行了一遍。自己动手的较少。
    有时间,我们共同分享分享。。。
  • 个人觉得 这本书先前讲的还是有些作者自己的东西的,后来就不行了 都是Minix的东西。 而且代码的组织不好,比较杂乱,有些地方属于小伎俩,真正的好的操作系统如linux不会让人觉得代码很生涩。 这本书有一定的难度,但是真正了解了x86系统的人看起来不会有太大困难。我是细读读了一遍之后的感觉。
  • 这本书太烂,基本没用
    回复DreamEnd说:
    这取决于读书人当时的水平。各有各的想法,没必要为此争论。
    2006-05-25 22:02:34
  • 不怎么喜欢 ,感觉一般,可能你自己说的有自己的道理,我没学到那么多的东西。
    回复吕梁山棵说:
    找适合自己的最重要!
    2006-01-08 21:26:44
  • 这是我买的第一步计算机书籍. 呵呵

  • 看了你的书评,早就想做点这方面的工作了,谢谢你的推荐啊。

    不过我习惯看电子书,没钱啊:) 哪里有电子书下载嘛?
    回复lhawk说:
    只要是我觉得好的书,我就会买,我之前写过《买书不读》,里面阐明了我的态度。
    2005-12-14 08:52:35
  • 在china-pub上这本书评论不一,我对这书的内容也很感兴趣,但看了部分评论后,打了退堂鼓。但我相信你的推荐。
    回复caisd说:
    关键在于适合自己。不要轻信别人的推荐,包括我。^_^
    2005-12-01 19:16:32