进入 C 代码部分 第一部分 准备 1。内核代码结构 核心从 / arch/kernel/head.s 跳转出来后,进如了 c 语言广阔的海洋。在浩如烟海的代码中有很多东西是" name="description" />

准备好开始读LINUX 内核了吗?

发表于:2007-07-04来源:作者:点击数: 标签:
linux 读核装备 MI LY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'">进入 C 代码部分 第一部分 准备 1。内核代码结构 核心从 / arch/kernel/head.s 跳转出来后,进如了 c 语言广阔的海洋。在浩如烟海的代码中有很多东西是

linux 读核装备

MILY: 宋体; mso-bidi-font-size: 10.0pt; mso-hansi-font-family: 'Times New Roman'">进入C代码部分

 

第一部分 准备

1。内核代码结构

       核心从/arch/kernel/head.s跳转出来后,进如了c语言广阔的海洋。在浩如烟海的代码中有很多东西是读核心可以放弃的。对于大部分windows菜鸟来说,还是使用source-insight来读代码吧,不过如果把所有的代码都加到source-insight里去(180M180M),速度太慢。在建立工程前先瘦身。

    1,NET,(你想做一个过时的黑客吗?如果不想放弃吧)

 

    2,sound,2。6的核心居然有这么个单独的目录,我都没有仔细看就把它放弃了。

 

    3,drivers,如果想知道驱动怎么写,可以看看,linux device driver 2nd Edition,网上有英文版的,书店有中文版。没有必要乍在这里看成千上万行程序代码。

 

    4,fs,里面有太多流浪狗没有见过的文件系统,最多留下ext2ext3就可以了。当然fs/*.c还是要留下的。

 

    5,如果是完整的代码,archinclude里还有很多别的体系结构的代码,我的CPUPiii所以留下i386部分。里面还有些amd-cpu的东西,不过不太多可以留下。

 

    6,其他还有几个小目录都可以留下,不过重要的是,kernel ,mm,ipc,init,include,arch,

 

    7,打开source-insight如果觉得它字体不太适应,可以在options--preferences--syntax formatting--basics里勾上,use-only-color-formatting。其他的东西再慢慢熟悉把。

 

    8,在source-insight工程里jump to definition 和回退的快捷键分别是Ctrl+=Alt+,

       9,完成如上准备后就可以开始旅行啦,yeah!!!

 

2。阅读核心的准备。

    流浪狗也不知道阅读核心代码需要多少基础知识,不过我会列举一些我觉得会用到的知识和我喜欢的书。因为流浪狗是非计算机专业的门外汉,所以很多东西可能对计算机专业的高手不太适合。

    0,必须会使用计算机!!!

    1,C语言知识。

    2,操作系统基础知识,我比较喜欢的书是《现代操作系统》。

    3,和unix系统的一些基本知识。ext2文件结构,fork等。

    4,X86proctect-mode。可以到网上找

 

    总之,基础知识是很重要的,如果没有积累,恐怕也不可能看懂核心。比如下面几个简单的东西。如果你还不明白,想看懂核心恐怕有点难。

        进程控制块,进程扇,进程链。downup操作,生产者,消费者。。。,LRU

 

    下面是部分书和资源,还有和很多一时想不起来了。

 

    OReilly - Understanding the Linux Kernel - 2nd Edition.chm(深入理解linux kernel),流浪狗看了一遍又一遍。

 

    OReilly - linux device driver- 2nd Edition,补充对设备驱动的理解。

 

    LINUX内核源代码情景分析(上,下),有的地方讲得比较详细,不过电子版(D版)很难看。说真的我很讨厌这本书的前言。

   

    google查找利索脚。

 

    joyfire笔记,是个网站。经常在csdn上逢人便说欢迎访问http://joyfire.net/。

 

    浙江大学的 linux分析报告 98 96,一个是研究生班,一个是本科班,如果有兴趣可以看看研究生是怎么毕业的 :-)

   

    NB的当然还是www.google.com了。

 

    核心第一个c代码函数是start-kernel,位置在init/main.clet's go!!!

 

原文转自:http://www.ltesting.net