Chip123 科技應用創新平台

標題: 回顧Trace Linux Kernel Source的一些想法~ [打印本頁]

作者: gogojesse    時間: 2009-12-20 03:50 PM
標題: 回顧Trace Linux Kernel Source的一些想法~
之前在這裡貼了一些自己trace linux kernel的一些筆記文,筆記式的! c2 o6 {: }# \) [7 U# a
文章難免寫得比較瑣碎,閱讀起來應該比較不容易,尤其逐行trace,% c7 Y9 L6 s& a2 {6 q* R
應該會有人很排斥或是不認同這樣的一種方式,之前曾經看到一些文章0 }# X1 ^, s& K( J- u% W0 o
甚至會明白地提醒讀者切記不要逐行研究程式碼,要將其觀念記住才是; z% ~" Y* h  ~9 r
重點。6 i. m4 E: k* I3 P/ r$ _1 W" M
7 x2 f/ z' H1 f5 c: b
這邊想針對這樣的論點提一些想法給大家參考,目的不是要訂出一個好
4 E4 v9 r3 y0 ~3 m, F6 H與壞,其實我覺得兩種方法並不相衝突,而是大家在學習的階段,可以
/ N2 q. k* r: m. N/ u4 `' D. L3 }依照理解程度來做取捨。
: d8 D3 q# G2 c8 |0 o: G* j, H
" ~/ m! z& T5 o. a7 _以自己的經驗來說,以前一開始囫圇吞棗,試圖去理解書上提到的觀念,! l) J5 {" \# o0 A
似懂非懂的寄了許多東西,但是往往人家問我:
) ^) O, g3 [; y; J' R6 X『你能夠自己寫出一個OS或是其中一部分功能嗎?』
. r, W& r2 s. ~( _1 g似乎就變得很心虛,只能告訴對方『我知道它的實作原理』,但是說要
0 p: H, N& [' C0 U自己要寫,好像就是少了點什麼? 好像懂,但是要怎麼真正的寫出來,- S- i) q9 J9 L! N+ f
卻是不怎麼敢肯定。8 T- b3 }2 V  |0 T, g8 O) t
0 {4 I0 D" {" F3 X, t. v
面對這樣的狀況持續一段時間,讓人真正有自信能夠依樣畫葫蘆弄出個6 @; @1 J6 R5 R, u# P! y' P  _
什麼東西,卻是在花心思從很基本的instruction set開始K和逐行逐行; G! Y8 R+ ?# L, q- w
了解之後,才覺得似乎概念和實作有了那麼一點連接。也由於這樣的基
* n  u4 p* }, k0 x) t礎,有時候有助於資料不足的狀況下,還能夠經由看程式碼來補足資料8 a7 w+ G  w) R
不足的部份,甚至可以用來印證自己的想法。
作者: gogojesse    時間: 2009-12-20 04:05 PM
這樣的說起來多看程式的好處多多囉?7 F% p! `. p% [7 e  b  t
6 d3 f. K. y1 h! j- U5 _
好像也不盡然,自己的經驗是,看上老半天,一大段雖然每個字都看得懂,  C1 A; D9 c: W- A; }/ U) U" `0 `
但是兜起來就是不曉得他要做啥用? (看英文的時候....恩...好像也是這樣   )
; f( i4 m8 R, I有時回頭翻書,看看觀念,才會發現這一段天書似的程式碼所隱含的意
. X- K4 R3 s% x& k義,自然就理解了。
5 H& u, u' }  B) q
8 \; _4 O) I: F* F3 _所以後來想想要深入kernel source的方式,似乎得要雙管齊下,一邊看
, c% @2 z9 }% M! n! T' y, i5 z5 p+ `" w觀念,一邊找出相對應的程式碼出來,最後觀念與觀念之間,必定有一些. `+ l. h$ s: f  {% r* r5 c
很細節的部份沒有被提到,玩家就得自己想辦法將他們串起來,一旦書本% s2 j9 n9 g$ A9 `
上的觀念可以在實際程式上得到印證,那這樣改天要改寫,也就遊刃有餘。
0 Q( L% u2 |- k/ f+ N8 N3 \( ^
這邊想特別提到的還是閱讀指令集的重要性,對指令的熟悉,不但對閱讀
* c) e8 d, `" S& [" r# Z7 F低階的程式碼有很大的幫助,還對於整個系統演進了解更為透徹。以前會) W2 J) @9 n# C% p
覺得了解太低階的東西用處不大,後來才覺得這些部分有時卻影響很大。
/ j1 h' J' _4 e& q% R+ W
1 m$ ]7 b" Y% Q0 E* y* o以上無聊閒談,歡迎大家提出自己的經驗,交流一下~




歡迎光臨 Chip123 科技應用創新平台 (http://chip123.com/) Powered by Discuz! X3.2