歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

准備好開始讀LINUX 內核了嗎?

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裡去(180M啊180M),速度太慢。在建立工程前先瘦身。

    1,NET,(你想做一個過時的黑客嗎?如果不想放棄吧)

 

    2,sound,2。6的核心居然有這麼個單獨的目錄,我都沒有仔細看就把它放棄了。

 

    3,drivers,如果想知道驅動怎麼寫,可以看看,linux device driver 2nd Edition,網上有英文版的,書店有中文版。沒有必要乍在這裡看成千上萬行程序代碼。

 

    4,fs,裡面有太多流浪狗沒有見過的文件系統,最多留下ext2,ext3就可以了。當然fs/*.c還是要留下的。

 

    5,如果是完整的代碼,arch和include裡還有很多別的體系結構的代碼,我的CPU是Piii所以留下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,X86的proctect-mode。可以到網上找

 

    總之,基礎知識是很重要的,如果沒有積累,恐怕也不可能看懂核心。比如下面幾個簡單的東西。如果你還不明白,想看懂核心恐怕有點難。

        “進程控制塊,進程扇,進程鏈。down和up操作,生產者,消費者。。。,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.c,let's go!!!

 

Copyright © Linux教程網 All Rights Reserved