|
之前在這裡貼了一些自己trace linux kernel的一些筆記文,筆記式的
/ s8 G4 M( U, u文章難免寫得比較瑣碎,閱讀起來應該比較不容易,尤其逐行trace,
" P: Y/ Z" k4 C" k應該會有人很排斥或是不認同這樣的一種方式,之前曾經看到一些文章2 J1 w8 B0 Y8 k e) t
甚至會明白地提醒讀者切記不要逐行研究程式碼,要將其觀念記住才是
U6 w6 L, Z9 i: v/ K* x% S; R1 Z重點。3 ~' q# k2 n4 o6 w) `2 d- Z" D
" k' Q9 L0 { B" C8 H這邊想針對這樣的論點提一些想法給大家參考,目的不是要訂出一個好3 S+ k8 t1 q; p6 w: l. y1 Q
與壞,其實我覺得兩種方法並不相衝突,而是大家在學習的階段,可以/ O2 W4 b9 a/ Z3 }% u& c/ A/ r
依照理解程度來做取捨。% X% U+ ]9 }" B: o+ }0 e$ i" `
% j8 Y* @( x. B* }5 r V* Z" P
以自己的經驗來說,以前一開始囫圇吞棗,試圖去理解書上提到的觀念,
* _. ]0 ?& x* F) E' C似懂非懂的寄了許多東西,但是往往人家問我:, n0 k8 M& m! L% z' m
『你能夠自己寫出一個OS或是其中一部分功能嗎?』( o, j+ o3 s+ B( t, ]
似乎就變得很心虛,只能告訴對方『我知道它的實作原理』,但是說要
u4 d8 N; y3 s6 ^) z3 w3 K自己要寫,好像就是少了點什麼? 好像懂,但是要怎麼真正的寫出來,+ t/ V5 P1 F: g( l& c
卻是不怎麼敢肯定。
! x, L/ s. y/ s% F7 T- Z5 C- R* u
面對這樣的狀況持續一段時間,讓人真正有自信能夠依樣畫葫蘆弄出個, O( \( n/ n! ^
什麼東西,卻是在花心思從很基本的instruction set開始K和逐行逐行
& r% A; c: j& M/ {5 S1 N# r9 U了解之後,才覺得似乎概念和實作有了那麼一點連接。也由於這樣的基: U1 o' t' N) E$ W A
礎,有時候有助於資料不足的狀況下,還能夠經由看程式碼來補足資料* e- e d8 r# `/ {4 N
不足的部份,甚至可以用來印證自己的想法。 |
|