如何學習操作系統原理?


我們簡單地談一談如何學習操作系統原理,這里我們假設讀者基本是一個小白,只有一點算法和數據結構的基礎,比如會用C語言寫鏈表,快排之類的。有一點我們必須強調,一切沒有(偽)代碼的理論書籍都是在耍流氓。所以根據這條准則,我們得通過編程的方式來學習操作系統原理。引用某老師的一句話,"Learning by coding them"。還有一點,學習操作系統原理不是學習怎么用各種API以及如何配置操作系統里頭的各種參數,我們得站在更高的角度去審視,我們得思考如何在內核中實現這些API和配置項。

本着授人以魚不如授人以漁的准則,我們給出一個確實可行的學習路線,最好循序漸進地進行,當然可以根據自身水平跳過某些階段:

 

第一階段 學習計算機組成原理和體系結構:

第一步,上coursera網課:from Nand to Tetris I,獲得基本的計算機組成原理知識。

第二步,細讀深入理解計算機系統第二版,並做課后對應習題和實驗,獲得基本的計算機體系結構方面的知識。資源可以從csdn搜索各章對應Lab源碼和解題報告。

 

第二階段 學習80386相關的匯編知識:

第一步,細讀匯編語言第二版(王爽),略讀Professional Assembly Language (Richard Blum),細讀X86匯編語言從實模式到保護模式(李忠),獲得能夠徒手編寫gasm,nasm,wasm格式的16位/32位80386體系下的匯編小程序,並能自如地在匯編中調用C函數,在C函數中內聯匯編或者調用匯編函數,重點了解80386體系方面的知識。

 

第三階段 閱讀早期操作系統代碼:

第一步,細讀orange'S 一個操作系統的實現(於淵),獲得操作系統微內核體系基本知識。

第二步,細讀Linux內核完全注釋(修正版v3.0 趙炯)+ UNIX操作系統設計(Maurice J.Bach),獲得操作系統宏內核體系基本知識。

Linux 0.11 源碼+bochs平台運行環境:

配套視頻鏈接:網易雲課堂:操作系統課程,哈爾濱工業大學

hit-oslab-linux-20110823.tar.gz + Linux內核完全注釋(修正版v3.0).pdf

配套資源鏈接:https://github.com/Yuandong-Chen/Linux-0.11

 

通過上述步驟的學習,讀者能夠獲得扎實的操作系統原理方面的基礎。重要的是,上述所有資源都可以在網上找到,完全免費。你完全能夠發揮自己的想象,寫出一個屬於自己的基於80386體系的但是沒法聯網的操作系統了。如何寫出一個能聯網的操作系統呢?這是計算機網絡方面的知識,又是另外一條學習路線。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM