作者wenli978 (文禮)
看板C_and_CPP
標題Re: [問題] 如何學習OS
時間Mon Apr 22 09:07:25 2019
看到和我當年有相同問題手癢回一下...
先說結論:工作很多年後,作業系統真的很難精通(遮臉)
恐龍書內容是把目前主流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
----
感覺還是沒有回答到原Po問題的核心...o-_-)=O)。O。)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.110.223.221
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1555895247.A.30F.html
推 ggBird: 去看linux0.11,簡單該有的都有 04/22 09:14
→ qazkevin: 請問不讀恐龍書直接看jserv影片會不會沒基礎看不懂!? 04/22 09:36
→ wenli978: J大的影片很詳細了...反過來把恐龍當參考本應該可以 04/22 11:10
→ cphe: 原原po幹嘛每篇推文都在問,自己去看看不就知道 04/23 08:19
→ cphe: jserv的教學講座從來就不是從基礎開始,他的C語言講座也是如 04/23 08:20
→ cphe: 此 04/23 08:20
推 qazkevin: 回cphe大,已開始看了,感謝! 04/23 09:18
→ cphe: 還是要看你想學OS的出發點,如果是考試恐龍書還是基本 04/23 14:00
→ cphe: 如果你已經接觸linux kernel好陣子,再去看jserv比較有感 04/23 14:00