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!!!