2009年12月20日 星期日

Trace Linux Kernel的一些想法~

之前貼了一些自己 trace linux kernel 的一些筆記文,筆記
式的文章難免寫得比較瑣碎,閱讀起來應該比較不容易,尤其逐
行trace,應該會有人很排斥或是不認同這樣的一種方式,之前
曾經看到一些文章甚至會明白地提醒讀者切記不要逐行研究程式
碼,要將其觀念記住才是重點。

這邊想針對這樣的論點提一些想法給大家參考,目的不是要訂出
一個好與壞,其實我覺得兩種方法並不相衝突,而是大家在學習
的階段,可以依照理解程度來做取捨。

以自己的經驗來說,以前一開始囫圇吞棗,試圖去理解書上提到
的觀念,似懂非懂的記了許多東西,但是往往人家問我:
『你能夠自己寫出一個OS或是其中一部分功能嗎?』
似乎就變得很心虛,只能告訴對方『我知道它的實作原理』,但
是說要自己要寫,好像就是少了點什麼? 好像懂,但是要怎麼真
正的寫出來,卻是不怎麼敢肯定。

面對這樣的狀況持續一段時間,讓人真正有自信能夠依樣畫葫蘆
弄出個什麼東西,卻是在花心思從很基本的instruction set
開始K和逐行逐行了解之後,才覺得似乎概念和實作有了那麼一
點連接。也由於這樣的基礎,有時候有助於資料不足的狀況下,
還能夠經由看程式碼來補足資料不足的部份,甚至可以用來印
證自己的想法。

這樣的說起來多看程式的好處多多囉?

好像也不盡然,自己的經驗是,看上老半天,一大段雖然每個字
都看得懂,但是兜起來就是不曉得他要做啥用? (看英文的時候
....恩...好像也是這樣 )有時回頭翻書,看看觀念,才會發
現這一段天書似的程式碼所隱含的意義,自然就理解了。

所以後來想想要深入kernel source的方式,似乎得要雙管齊
下,一邊看觀念,一邊找出相對應的程式碼出來,最後觀念與觀
念之間,必定有一些很細節的部份沒有被提到,玩家就得自己想
辦法將他們串起來,一旦書本上的觀念可以在實際程式上得到印
證,那這樣改天要改寫,也就遊刃有餘。

這邊想特別提到的還是閱讀指令集的重要性,對指令的熟悉,不
但對閱讀低階的程式碼有很大的幫助,還對於整個系統演進了解
更為透徹。以前會覺得了解太低階的東西用處不大,後來才覺得
這些部分有時卻影響很大。

以上無聊閒談,歡迎大家提出自己的經驗,交流一下~

沒有留言:

張貼留言

搜尋此網誌