專案網址
os-tutorial
專案介紹
以下介紹翻譯自開源專案的介紹
如何從頭開始建立作業系統!
我一直想學習如何從頭開始製作作業系統。 在大學裡,我學會了如何實現高階功能(pagination、semaphores、記憶體管理等) ,但是:
我從來沒有從我自己的 boot sector 開始,大學很難,所以我記不得大部分了
我厭倦了那些認為閱讀已經存在的核心(即使很小)是學習作業系統好主意的人。
受到這份檔案和 OSDev wiki 的啟發,我將嘗試做一個簡短的逐步 READMEs 和程式碼範例,供任何人跟蹤。 老實說,這個教學指南基本上是第一份文件,但分裂成小塊,沒有理論。
Updated: more sources: the little book about OS development, JamesM’s kernel development tutorials
更新: 更多資源: the little book about OS development, JamesM’s kernel development tutorials
特色
這門課程是針對那些對低階運算感到熟悉的人的程式碼教程。 例如,程式設計師對作業系統的工作方式有好奇心,但沒有時間或意志力開始從頭到尾閱讀 Linux 核心
幾乎沒有理論。 是的,這是一個特色。 Google 是你的理論講師。 一旦你通過了大學,過度的理論比沒有理論更糟糕,因為它使事情看起來比實際上更加困難
課程很小,可能需要5-15分鐘才能完成。 相信我,相信你自己。 你能做到的
如何使用本教程
- 從第一個資料夾開始,按順序排列。 它們基於以前的程式碼,所以如果你直接跳到資料夾05,不知道為什麼會有一個 mov,0x0e,那是因為你錯過了第二課。 真的,按順序來就行了。 你總是可以跳過那些你已經知道的東西。
- 開啟 README,閱讀第一行,在閱讀程式碼之前詳細閱讀你應該熟悉的概念。 Google 你不熟悉的概念。 第二行列出每一課的目標。 閱讀它們,因為它們解釋了我們為什麼做我們所做的事情。 “為什麼”和”怎麼做”同樣重要。
- 閱讀 README 的其餘部分。 它非常簡潔。
- (可選)讀完 README 後,嘗試自己編寫程式碼檔案。
- 看看程式碼範例。 它們都有非常好的註解。
- (可選)與他們一起嘗試打破一切。 確保你理解某事的唯一方法就是試圖打破它或者用不同的指令來複製它。
首先閱讀每個資料夾的 README,然後是程式碼檔案。 如果你很勇敢,試著自己編碼它們。
策略
我們想用我們的作業系統做很多事情:
- 從 Boot 開始,沒有 GRUB- 已完成!
- 進入 32 位元模式-已完成!
- 從 Assembly 跳到 C-已完成!
- 中斷處理-已完成!
- 螢幕輸出和鍵盤輸入-已完成!
- 一個小小的,基本的libc 可以滿足我們的需求-已完成!
- 記憶體管理
- 寫一個檔案系統來儲存檔案
- 建立一個非常簡單的 shell
- 使用者模式
- 也許我們可以寫一個簡單的文字編輯器
- 多行程和排程
也許我們會按照這個順序來看,不管怎樣很快就會知道了。
如果我們足夠勇敢:
- 一個 BASIC 直譯器,就像70年代一樣
- 一個圖形使用者介面
- 網路
貢獻
這是一個個人學習專案,儘管這個專案很久沒有更新過了,我仍然希望在某一時刻能夠進入這個專案。
我感謝所有那些指出錯誤並提出 pull request 請求的人。 我需要一些時間來回顧所有的事情,我不能保證此時此刻。
請隨意 fork 這個 repository。 如果你們中的許多人有興趣繼續這個專案,請告訴我,我會把”main fork”從這裡連線起來。
相關線上課程
Soft & Share 工具市集
這是 Soft & Share 新推出的服務 – 工具市集,收集了一些軟體服務/工具的優惠方案,歡迎來逛逛!
發表迴響