看到和我當年有相同問題手癢回一下...
先說結論:工作很多年後,作業系統真的很難精通(遮臉)
恐龍書內容是把目前主流OS會用到的觀念都塞進去
但事實上,業界會碰到去改大型OS Source code的機會很少
除非你是Linux Kernel開發人員,或者在微軟視窗部門上班
大部分工作上需求是把大型OS拿來使用而已
像Android、Linux、Windows、UNIX之類的
會摸到很下層部份最多就是系統程式
還有就是編譯OS的時候,學著去調一下OS參數編給自己的機器用
像Linux這種大型OS的Source Code真要從頭看到尾這輩子應該看不完
(板上有全部看完看懂的大老讓我膜拜一下)
另外一種OS是RTOS這種較小型的,很多嵌入式系統用到
這一類OS Source Code不會太多,基本上都看的完
但這種OS不會把恐龍本裡面所有的功能都用上
大部分會少File System Manager
極端一點的還會少掉Memory management
甚至有部份人士會認為這種東西不能叫作業系統
相對來說,這種OS就有很大的機會要去改裡面的code
以我的經驗來說,都是改code時才回頭去看以前還給老師的恐龍本
才知道當初恐龍本講的某個概念實作出來原來是長這樣
然後才理解為什麼作業系統在這種機器上面要這樣實作這種功能
(硬體功能支援度、硬體資源、硬體速度都會影響)
說這麼多回到原問題:
學恐龍本裡面OS的觀念要做啥...
如果要考研究所,就要把各種概念的優缺點都能明確的分析出來
作業系統提到的各種觀念,大部分都不會有Best Solution
要能明確知道某個概念,哪種機制,用在哪種場合上會比較好
(比方task管理有好幾種模式,要能知道各種的優缺點)
因恐龍本是OS實做功能上抽象化出來的
所以有時候看圖說故事比較快懂
如果有不懂的地方多用Google找找看有沒有圖解
或者找一套有Source Code的OS來看那段功能
(前文提到的MINIX是一個很好的範例)
或者要硬K Linux的某部份功能Code也可以
(以前老師是推薦我們去K Linux的記憶體管理那部份)
重點還是要花很多精力去Trace Code
從目前code中學習,會感覺踏實很多
總之計算機工程這門學問,做中學很重要 XD