Thinker
@Thinker
說
Fri, Mar 19, 2021 4:50 PM
12
2
Jim Huang
閱讀程碼的文章需要從忽略細節開始, 先抓大致的架構。就像要解剖一隻青蛙, 你總要先搞清楚四肢、頭部、腹腔等。這些都清楚之後, 才慢慢瞭解每一束肌肉和其作用。
又如戲偶, 你總得先抓住頭部, 讓整個戲偶自然垂下、攤開, 才能看清楚每個關節。
以軟體來說, 你總得先找到程式/系統進入點, 看大致知道在何處進行初始化, 在何處進入主迴圈或邏輯, 然後才有辨法掌握每一個 module 的細節。
如果特定以 kernel 為例。你總得先知道 bootloader 從什麼地方跳入 kernel, init 了哪些 module 之後, 才進入主迴圈開始 context switch 到第一個 process。
Thinker
@Thinker
說
Fri, Mar 19, 2021 4:55 PM
你可以不用知道每個 module initialization 的細節, 但你至少要先知道在開機流程的哪個位置被呼叫了。你或許不用知道 context switch 的細節, 但你至少要知道誰會呼叫 context siwtch 的 function。你不用知道 scheduler 的細節, 但你至少要知道系統怎麼從 userspace 回到 scheduler, 又怎麼重新回到另一個 process 的 userspace。
Thinker
@Thinker
說
Fri, Mar 19, 2021 4:57 PM
這些就像是人偶的四肢, 總要先綱舉而目張, 然後才來討論一些 data structure 怎麼實作之類的。
載入新的回覆
閱讀程碼的文章需要從忽略細節開始, 先抓大致的架構。就像要解剖一隻青蛙, 你總要先搞清楚四肢、頭部、腹腔等。這些都清楚之後, 才慢慢瞭解每一束肌肉和其作用。
又如戲偶, 你總得先抓住頭部, 讓整個戲偶自然垂下、攤開, 才能看清楚每個關節。
以軟體來說, 你總得先找到程式/系統進入點, 看大致知道在何處進行初始化, 在何處進入主迴圈或邏輯, 然後才有辨法掌握每一個 module 的細節。
如果特定以 kernel 為例。你總得先知道 bootloader 從什麼地方跳入 kernel, init 了哪些 module 之後, 才進入主迴圈開始 context switch 到第一個 process。