經過之前的一個系列學習,自己照着書本 《操作系統真相還原》學着做了一個 demo 級別的操作系統,總算對操作系統的整體和細節有了一個粗淺的了解。但寫操作系統不是目的(我目前也沒這能力),主要是想通過親自動手的方式,深入了解一些操作系統底層的知識,而不是只停留在書本和概念上,以下是系列博客(也是學習筆記吧)
- 【自制操作系統01】硬核講解計算機的啟動過程
- 【自制操作系統02】環境准備與啟動區實現
- 【自制操作系統03】讀取硬盤中的數據
- 【自制操作系統04】從實模式到保護模式
- 【自制操作系統05】開啟內存分頁機制
- 【自制操作系統06】終於開始用 C 語言了,第一行內核代碼!
- 【自制操作系統07】深入淺出特權級
- 【自制操作系統08】中斷
- 【自制操作系統09】中斷的代碼實現
- 【自制操作系統10】內存管理系統
- 【自制操作系統11】中場休息之細節是魔鬼
- 【自制操作系統12】熟悉而陌生的多線程
- 【自制操作系統13】鎖
- 【自制操作系統14】實現鍵盤輸入
- 【自制操作系統15】用戶進程
接下來,我會通過閱讀經典的操作系統源代碼,linux-0.11,來學習一個成熟的操作系統是怎么完成的,先放一句狠話,我會一行不落地把全部源碼讀完,具體做不做得到看情況啦哈哈。參考書籍《Linux內核設計的藝術:圖解Linux操作系統架構設計與實現原理》
本章先完成下載代碼的工作吧
在 linux 官網下載源代碼:https://mirrors.edge.kernel.org/pub/linux/kernel/Historic/old-versions/
源碼下好了就是上面那個樣子,打開了一個 bootsect.s 文件,看到兩個熟悉的值,0x07c0 和 0x90000
回去翻了下自己寫的操作系統,果然這個 bootsect.s 就是自制操作系統中 mbr.asm 里做的事,先定位到 0x7c00 內存位置開始執行,然后將自身復制到 0x90000,然后跳轉到 0x9000:go 位置處執行,之后的任務就是復制磁盤中的幾個扇區到內存。
還行,還沒開始細看就有了個初步印象,這都歸功於之前手動寫的操作系統。
好啦,我們下章正式開始 linux 之旅