是从10年7 8月份的时候开始读这本书,之前读过于渊的那本自已动手写操作系统,然后觉得0.11内核或许是一个比较适合自已水平的选择,然后就开始动手了,本来预计大抵应该是半年的,没想到一下子花了差不多两年时间,中间由于工作的缘故,断断续续的,去年因为头疼也中断了大半年,工作以后,学习甚为不易,如果有机会的话,在学校里面会更珍惜时间的。关于工作和学习,题外太多,收住。
以下是个人的学习过程和心得:
这本书主要分成三部分,第一部分是1-5章,第二部分是6章以后是源代码,第三部分实验环境设置。
第一部分是理论基础,第3章说是编程的事情,第4章关于保护模式,第5章关于内核结构的,全书最难的部分
由于之前对保护模式有一定了解,所以前面几部分上手还行,第5章当时看的时候是一扫而过的,后来不断的回来翻,才发现有些内容,当你懂以后你就能够看懂,不懂的时候,死活也看不懂。。
第二部分开始,我个人是从bootsect.s开始,采用增量的方法,一点点的照着书的代码开始往里面加,从最开始在屏幕上显示loading...到最后shell实行起来,中间是由无数次的make和debug实现的。中间碰到了无数的问题,如开始的时候没有printf函数,自已参照别的书,在setup.s里面加了一个disp_str函数,后来实现printf时候,直接在里面裹了disp_str,然后自已忘记了,结果在move_to_user_mode以后,由于栈的问题一调用就出错退出,自已找了好久才发现,此类种种问题,有苦亦有乐。
第三部分是环境的搭建,如果不需要自已动手实现的话,可以不用看。我个人说说我自已的经验,我整个环境是用vmware里面装的redhat 9来作为编译环境的,然后代码是在windows下面用souceInsight看的,然后辅以editplus和ultraedit。secureCRT登到虚拟机上面编译,vim有时候用用,因为不怎么熟悉。
最关键的工具是调试工具,开始的时候用的是bochs自带的调试,因为最开始的boot部分是汇编写得,所以很适合,到了main函数以后因为代码基本上C代码了,所以感觉很费劲。进度慢了很多,碰到问题有时候要找很久,后来用了gdb 以后,确实很爽,非常推荐。
每天做的时候,都大概写一下工作日志,说明当天主要解决了什么问题,下一步还有难题。然后代码是用svn存得,最后总结的工作日志不到2万字,svn里面的版本号是100多个。
个人觉得书里面最难理解的是关于进程切换的TSS切换部分,当时有很多概念,书上看的时候模模糊糊,但实际上根本没有懂,然后通过调试一步步看寄存器和内存的变化,才慢慢的理解一些,所以说纸上得来终觉浅,自已试试还是有好处的。关于内存管理和文件系统,算法什么的其它操作系统书得很详细,都可以参考。
个人看得时候用的一些参考书目,供参考:
Linux内核设计的艺术
UNIX操作系统设计
Linux内核设计与实现 (LKD)
自已动手写操作系统(第二版叫Orange's,从策划上来说远不第一位版本的名字好)
现代操作系统
当然,这个论坛帮助也很大:http://www.oldlinux.org/oldlinux/
That's all.
纸上得来终觉浅,绝知此事须躬行
对“纸上得来终觉浅,绝知此事须躬行”的回应
《Linux内核完全剖析》热门书评
-
纸上得来终觉浅,绝知此事须躬行
49有用 1无用 平凡的老鱼 2012-10-28
是从10年7 8月份的时候开始读这本书,之前读过于渊的那本自已动手写操作系统,然后觉得0.11内核或许是一个比较适合自已水平的选择,然后就开始动手了,本来预计大抵应该是半年的,没想到一下子花了差不多两年时间,中间由于工作的缘故,断断续续的,去年因为头疼也中断了大半年,工作以后,学习甚为不易,如果有机...
-
直面内核源代码
6有用 0无用 alek314 2006-07-19
需要c和汇编,还有操作系统的基础理论。 作者在前几章介绍必要的保护模式编程和一些80x86接口编程,还有gcc和它的汇编。在到图书馆找一些资料就可以读下去,不会距人于千里之外。之后对api的理解应该会提高一个层次。 作者...
-
linux内核入门的好书
2有用 0无用 天天快乐 2011-03-24
大三寒假一个多月,以及开学后一个多月,我都在全力阅读这本书。从中学习了很多基础性的知识。一个完整的键盘驱动怎么写?磁盘驱动怎么写?虚拟地址,逻辑地址,物理地址怎么实现?文件系统怎么实现?甚至C语言的多文件是怎么回事?尤其是那么多的头文件为什么这样写。许多问题我看到了对他们的分析过程,以及代码的实现。...
-
how to 理解GDT,LDT,IDT,逻辑地址和线性地址的的概念
1有用 0无用 Forever 2016-05-07
建议看下《深入了解linux内核的第二章节》以及这篇文章,我在看《深入了解linux内核的第二章节》也没看懂这些概念,然后我 去google到下面的文章,把里面每个术语搞清楚它是干什么的,理解每句话,gdt,ldt,idt 逻辑地址和线性地址都豁然开朗。然后我再回过去看《深入了解...》,感觉都理解...
-
Linux内核完全剖析--基于0.12内核的有奖活动!欢迎参与哦!
1有用 0无用 send_linux 2009-12-03
Linux内核完全剖析--基于0.12内核的拍卖,很容易获得该书,呵呵!http://linux.chinaunix.net/bbs/thread-1146184-1-1.html...