|
之前在這裡貼了一些自己trace linux kernel的一些筆記文,筆記式的. W6 |- d$ \5 p( i8 K
文章難免寫得比較瑣碎,閱讀起來應該比較不容易,尤其逐行trace,
% o' ]% X1 l) T應該會有人很排斥或是不認同這樣的一種方式,之前曾經看到一些文章
- Y; m! h1 a C& R+ z: b c甚至會明白地提醒讀者切記不要逐行研究程式碼,要將其觀念記住才是% C! p7 Y$ Q$ A" `
重點。% H' P, @& i6 W
5 l7 Y9 Z* {2 l7 X9 ^. l, o' K
這邊想針對這樣的論點提一些想法給大家參考,目的不是要訂出一個好8 \1 Q4 D1 w2 b- `5 t7 w4 a# j
與壞,其實我覺得兩種方法並不相衝突,而是大家在學習的階段,可以
' z3 Q9 P% T; g8 z8 ~4 X5 f2 L9 [依照理解程度來做取捨。7 v) L. g7 L! a7 q0 K, H1 g4 q
7 E. ]/ y5 p" ^1 G2 y: J6 j
以自己的經驗來說,以前一開始囫圇吞棗,試圖去理解書上提到的觀念,
( q2 p. \- \( k8 O3 Q' m似懂非懂的寄了許多東西,但是往往人家問我:. ?+ r: K3 N9 \" O8 L* _
『你能夠自己寫出一個OS或是其中一部分功能嗎?』 l, `4 N$ i8 [2 J$ \$ c; F7 S( w. o
似乎就變得很心虛,只能告訴對方『我知道它的實作原理』,但是說要
2 n& m2 ]. B8 H- ^3 T) _; m( x9 T. }自己要寫,好像就是少了點什麼? 好像懂,但是要怎麼真正的寫出來,
, h. e i# p+ }# O6 B5 Z卻是不怎麼敢肯定。
: n f0 r$ F4 x% a7 [6 q3 N2 j8 `9 W7 U% q/ c' n
面對這樣的狀況持續一段時間,讓人真正有自信能夠依樣畫葫蘆弄出個
, S7 h k# \) d3 l% j什麼東西,卻是在花心思從很基本的instruction set開始K和逐行逐行
6 m) N+ `* _8 |) l" x$ t了解之後,才覺得似乎概念和實作有了那麼一點連接。也由於這樣的基
2 C# P# d$ p6 z# e! `礎,有時候有助於資料不足的狀況下,還能夠經由看程式碼來補足資料4 P; c; @) Z1 \0 m1 V) X$ w& L
不足的部份,甚至可以用來印證自己的想法。 |
|