如果說DIM-SUM操作系統是一個完美的操作系統,那無疑是一個謊言。如果說DIM-SUM操作系統只是大家茶余飯后的談資,那無疑是另一個謊言。
在國產基礎軟件大發展的歷史背景下,自研國產操作系統顯得十分迫切和必要。2018年DIM-SUM第一個版本:HOT-POT操作系統誕生。業界同人親切地將這個系統稱為火鍋操作系統。
實際上,DIM-SUM僅僅是一個快速原型操作系統,它可以運行在ARM 64 的QEMU模擬器中。用戶可以隨便找一臺機器,通過QEMU模擬器將它運行起來。在這個原型操作系統中,實現了同步與互斥、調度、內存、中斷、定時器、塊設備、文件系統模塊,并且有一個簡單的命令行控制臺。
“自研操作系統是一件極富挑戰性也很難成功的事情,寶友同學敢于在這方面進行積極有益的嘗試,值得支持和鼓勵。加油,努力!”
—— 阿里巴巴經濟體技術委員會主席、阿里云總裁、阿里巴巴合伙人行癲對本文作者及其在過去幾年中實現的一個操作系統DIM-SUM所做的評價。
DIM-SUM實現的功能
開源軟件運動,已經為實現操作系統提供了現實可能性。首先,像linux這樣的開源操作系統提供了很好的基礎,這樣可以從開源軟件中學習到不少的技能、方法、設計思路。其次,開源軟件允許分散在全球各地的開發者協同工作、集思廣益。我在Linux社區中,作為ARM/ZTEARCHITECTURE的Maintainer,對此深有體會。
操作系統是IT行業的“核武器”。到目前為止,我們還處于“缺芯少魂”的狀態,其中的“魂”就是操作系統。真正核心的軟件,需要一代人,甚至幾代人耐心地雕琢,而不能寄希望于短時間內產生立竿見影的效果。換句話說,要用“板凳一坐十年冷”的心態來做這件事。有了這樣的心態,就不會覺得難。
從另一角度來說:萬古長空,一朝風月。任何難事,一旦想要去做,就需要把握當下。空談誤國,實干方能興邦。即使這件事情很難,但是不動手永遠不會有任何結果。況且,我喜歡有挑戰性的事情,例如:寫一個可用于生產環境的,能夠替代Linux的服務器操作系統!
目前,DIM-SUM已經實現了如下功能:
- ARM 64 QEMU小系統,含內存|時鐘初始化。
- 全局優先級調度模塊,調度算法類似于Linux實時調度。
- 內存管理模塊,包含頁面管理、Beehive分配器。
- 兼容Linux Ext3的LEXT3文件系統。
- 塊設備層實現。
- 集成了LWIP網絡協議棧。
- 移植了常用的內核態C庫API。
- 實現了一個粗糙的命令行控制臺。
總之,我認為HOT-POT是DIM-SUM操作系統的良好起點。在DIM-SUM后續的開發過程中,我懷著熱切的心情,期待你參與到它的開發中來。
▊ DIM-SUM歡迎什么
任何建設性、對抗性建議、穩定“優雅”的代碼、BUG報告、測試、社區建設等,都是DIM-SUM歡迎的!
▊ DIM-SUM不歡迎什么
我們不歡迎空談和只會抱怨的人。雖然我們知道DIM-SUM并不完善,你有很多指責它的理由,可以指出DIM-SUM的不足,但是請同時拿出能優化DIM-SUM、可以正常運行的代碼貢獻給DIM-SUM。
獲得源代碼
Paul E.Mckenney曾經說過:If you want to do cool things,it is necessary to invest large amounts of time learning and (especially!)practicing.
誠哉斯言!
請讀者相信我這個20年傳奇工匠程序員的經驗:要深刻地理解像Linux操作系統中源代碼這樣的復雜代碼,必須動手實踐,對著源代碼看書!
本書盡量少粘貼DIM-SUM源代碼,我保證會對本書中出現的源代碼進行逐行分析。這是故意為之的,目的是盡量使讀者下載源代碼并對照源代碼閱讀本書。
要獲得本書配套源代碼,有以下兩種方式:
- 直接通過網頁下載。
- 通過Git獲取源代碼。
▊ 通過網頁下載源代碼
通過網頁下載源代碼,是最簡單、快捷的方式。下載好DIM-SUM的源代碼之后,將下載的源代碼包命名為dim-sum.20200616.tar.bz2。為了防止在下載過程中,由于網絡原因導致文件損壞,可以驗證源代碼包的MD5值。在ubuntu16.04系統中,可以通過在命令行控制臺上輸入如下命令,來得到源代碼包的MD5值:md5sum dim-sum.20200616.tar.bz2
正確的MD5值應當是:
9248ca8c21f3a4988ddba6426c4fdf60
關于DIM-SUM操作系統的最新消息,也會通過博客發布,有興趣的讀者可以看看。
通過網頁下載源代碼,可以滿足閱讀本書的要求。但是,它滿足不了你如下的要求:
- 獲得DIM-SUM操作系統最新的源代碼。
- 查閱DIM-SUM操作系統的補丁記錄。
下一步將討論如何通過Git獲得源代碼,這也是我推薦的方式。
▊ 通過Git獲取源代碼
無論怎樣強調Git在開源項目中的重要性都不過分。我甚至推薦讀者找一本Git簡明手冊仔細閱讀。
如系統已安裝Git工具,就可以通過gitclone命令獲取DIM-SUM操作系統的源代碼。DIM-SUM源代碼將托管到碼云服務器。
這個命令會在當前目錄中創建一個名為dim-sum的子目錄,并將DIM-SUM操作系統的代碼下載到本地。
當然,對于大多數讀者來說,不僅僅想對照著源代碼閱讀本書,他們還希望:
- 跟蹤DIM-SUM的最新版本。
- 查閱DIM-SUM的補丁記錄,明白每一個補丁的作用,與補丁的作者聯系。
- 給DIM-SUM提交補丁。
- 在DIM-SUM中添加自己的代碼。
- 在PC上調試DIM-SUM的代碼。
本文節選自博文視點新書《自研操作系統:DIM-SUM設計與實現》。

謝寶友 著