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