說起操作系統,大家都覺得是一個龐大的工程,超級複雜,可望而不可即。現在我們有一個大膽的想法,一個人能不能從第一行代碼碼起,開發一個五臟俱全的操作系統呢?答案是肯定的,而且這個操作系統具體商用操作系統的所有主要功能(當然達不到商業操作系統的全部功能了)。
我們知道商業操作系統或者開源的Linux操作系統多的千萬行甚至億行代碼,規模之大,讓人無法想象。微軟Windows開發團隊多達幾千人,而Linux內核參與的開發人員也在千級別。我們當然不是要開發一個這麼大規模的操作系統,我們的目標是開發一個具備多進程及調度、內存管理、文件系統和中斷管理等功能的操作系統。這個已經具備操作系統的核心功能了。
其實有很多種方法可以完成上述任務,而且這些方法是實操類的,只要按照操作,就可以開發出一個微型操作系統。另外需要說明的一點是,這些方法與Linux內核講解類的是不同的。後者只能讓你理解Linux內核的實現,而本文介紹的方法則可以讓你從頭開發一個文件系統。下面我們在這一一道來。
操作系統-真象還原
這本書的名字很貼切,操作系統真的是一頭大象,如果不能看到全貌,就會有盲人摸象的感覺。本書以此名為切入點,帶領我們從不同的角度理解操作系統的每個方面,每個細節。
圖1圖書封面
本書開發的每一部分都可以在bochs虛擬機上面運行。從最簡單的十幾行代碼開始,一直到幾千行代碼的完整操作系統,每個實例都可以編譯運行在bochs虛擬機。最終,本書實現了一個簡單但完整的操作系統,實現的內容包括:MBR,loader,內存管理,中斷管理,文件管理,系統調用,多進程切換(內核以及用戶態)等內容。
客觀的說,本書完全從實踐出發,基本上可以說是手把手,把代碼一行行列出來,講解得清清楚楚。本書另外一個特點是本書配套所有代碼都可以找到,因此我們可以安裝作者的思路進行編譯和練習。
Xv6操作系統
Xv6是由麻省理工學院(MIT)為操作系統工程的課程開發的一個教學目的的操作系統。Xv6是在x86處理器上用ANSI標準C重新實現的Unix第六版(Unix V6,通常直接被稱為V6)。該操作系統不僅僅有源代碼,而且有配套的電子書和教學視頻。如下是電子書的目錄,具體內容電子書可以私信本號獲得。
圖2 Xv6內容目錄
30天自制操作系統
本書是日本作者川合秀實的大作,該書最大的特點不僅僅開發一個操作系統,而且還有圖形界面。日本人的認真和嚴謹想必大家都聽說過。讀過該書以後,你真的會體會到日本人做事的嚴謹。本書同樣有配套的源代碼,讀者可以一邊讀書,一邊實踐。按作者的話,30天真的可以開發出一個圖形化的操作系統。
圖3 30天自制操作系統
下面本書中的一個具體的實例,可以看到一個非常初級的窗體。
圖4 圖形界面操作系統
清華大學操作系統課程
這個是學習操作系統的壓箱底寶物。清華大學陳渝教授有一套操作系統的課程,並且開發了一個類似Xv6的操作系統(uCore),源代碼可以在github下載。這個操作系統的配套資料非常全,不僅僅有源代碼和配套的電子書,而且有免費的視頻教程。
圖5 操作系統實驗指導
私信本號可以獲得上述內容的部分電子書和源代碼鏈接等信息。
私信內容: 操作系統