注册 登录
编程论坛 操作系统内核开发

请问大家读《自己动手写操作系统》一书有没有什么好的方法呢

nwpu063417 发布于 2010-08-02 22:27, 2511 次点击
灌水帖
看到bccn推出os内核开发版块,又回来了。最近在看于渊的《自己动手写操作系统》一书的第二版,总觉得书中的例子如果自己凭理解去做,写不出代码来;如果看着书敲代码,效果又不是很好;只看原理,还是没有达到自己动手写操作系统的目的。
所以不知道论坛上各位大侠有没有在读这本书的,并想知道大家读这本书有没有什么好的方法。
谢谢~~
10 回复
#2
miaowangjian2010-08-03 01:42
haha,我读《自己动手写操作系统》的时候也碰到同样的问题,不过我读的是第一版

最初读发现这本书的时候很激动,是一个实践性很强的书。粗略读了第一章,就激动的开始在xp下配置好开发环境,编写了第一个实验。
后来,看着书,心情好时自己敲代码编译,更多时候直接拷贝光盘里的代码,修修改改再编译运行。
因为我学习习惯的是通过 简单修改几个值,再编译运行,查看产生的效果变化 以此来学习的。但按照书上介绍的开发环境编译书里的代码,再执行周期很大(主要是我没完全搭建好环境,每次修改编译后,都要重新启动虚拟机和里面的DOS,然后执行编译后的程序),时间久了就变得懒了,不再对书上的实验代码进行修改测试。而只是看书,于是到了第三章就越来越看不懂了

放下几个月后,重新拾起勇气再拿起书研究,这回下了很大决心,先将前3,4,5章的所有代码都打印出来(好厚一打),整理好,一个实验一个实验一句一句看,用笔勾画出调用关系图(主要是我当初汇编不扎实,所以当初对复杂些的汇编程序就晕了)。
这样,我对书上第三章大部分都能看明白了。但是依然不会凭借理解去自己写,因此心里也没什么底,看久了又放下。

再后来,我偶然情况下,发现了在xp下搭建能够快速编译测试的开发平台方法。于是我将书上的实验一个个搬到新的平台上重新做一遍,因为编译器改了,实验的大题内容结构不变,但许多细节都要改动。结果许多用nasm编写很简单的地方,在新的编译器上却出现许多问题。于是只有使用bochsdbg.exe一点点调试。如此一个个实验做下来。我对第三章的内容就了解得比较透彻了。此时我可以根据自己的想法随意改动程序编写自己的实验例子了。

《自己动手写操作系统》里的第三章最为重要,看懂了里面的所有实验,32位保护模式的核心内容就明白了。后面的章节的内容,基本上就不会有什么大的问题。

最近在看linux0.12代码。因为没有一个个实验做来逐步了解。学习的方法为:1.看书上对模块功能的解释,2.逐行代码阅读,将代码与解释(注释)对上号,3.使用bochsdbg.exe调试,设断点,单步执行等,并根据代码功能查看寄存器与内存变化。

总结来说学习的方法有两种:
1.根据书上的例子自己动手写实验(完全照书上敲代码,不是实验,是练习打字),需要有自己的理解,存在错误了要想办法调试找出来。
2.不想动脑经编写实验(或条件不允许),那么就边阅读代码,并且尽可能通过调试验证代码对寄存器内存等产生的变化。

当你能够在阅读代码时,程序对内存,对计算机产生的各种影响都心如明镜般的话,那么就完全可以单凭阅读代码就能理解程序了,而不需要通过编写实验或是调试来学习。
#3
nwpu0634172010-08-03 16:59
回复 2楼 miaowangjian
太感谢miaowangjian了,我先按你的方法试试看,到时候遇到不懂的地方再来问你~~
#4
大色秘密2010-08-12 01:30
嘎嘎,正在学习中。谢谢二楼的回复,我试试!
#5
djchx2010-08-19 12:32
顶一下
#6
helloycc2010-10-05 12:58
不是太难的,2楼说的很好,我个人认为先学汇编(主要是BIOS中断),然后这本书其实很简单.
#7
j5anj5an2010-11-29 23:32
你们好,我最近也在看自己动手的第二版,这里面是直接在linux下用bochs调试程序的,但是我搭建的环境总是有问题!有没有成功安装的拿来分享一下吧!最好有具体的步骤(有截图最好)!谢谢了!
#8
neney2011-02-25 09:57
自学系难些,还要恒心
#9
zhaoxiaoyong2011-05-09 14:05
我跟楼主一样的感觉、。
#10
yunlong43102011-10-26 17:33
最近我也在看这本书,很不错
#11
oemwang2018-06-10 21:07
我的博客:http://fasm.blog.
1