他開源了耗時(shí) 5 年寫的操作系統(tǒng)

前幾天,Hacker News 上有一則帖子登上了 TOP 榜,引起了不少人的關(guān)注:我花了 5 年時(shí)間編寫自己的操作系統(tǒng)。

“5年”、“自己的操作系統(tǒng)”,這兩點(diǎn)顯然是吸引人們點(diǎn)擊查看的主要原因:帖主憑一己之力,用 5 年時(shí)間寫出來的操作系統(tǒng)會(huì)是怎樣的?
好奇心被勾起,于是便打開了這位帖主提供的 GitHub 地址:
https://github.com/halfer53/winix
剛看到這個(gè)操作系統(tǒng)的簡(jiǎn)述,許多人就感到意外了:帖主開發(fā)的 Winix 系統(tǒng)主要是受到了他在大學(xué)時(shí)所學(xué)習(xí)的 Minix1 操作系統(tǒng)的啟發(fā)——起初 Linus Torvalds 也是在 Minix 操作平臺(tái)上建立的 Linux。
據(jù)了解,這位帖主 @halfer53 是一位來自新西蘭的開發(fā)者,而他在業(yè)余時(shí)間開發(fā)的 Winix 是用于 Waikato RISC 架構(gòu)微處理器(WRAMP)的 UNIX 風(fēng)格操作系統(tǒng),也是一個(gè)兼顧可用性和性能的混合內(nèi)核。
功能及演示
Winix 雖然僅由 @halfer53 一人開發(fā),但系統(tǒng)功能意外地還挺齊全:
內(nèi)核內(nèi)存管理:虛擬內(nèi)存、頁面映射
進(jìn)程管理:內(nèi)核線程、進(jìn)程創(chuàng)建
異??刂坪椭袛嗵幚沓绦?/span>
支持大部分 POSIX api 的內(nèi)存文件系統(tǒng)
支持多個(gè)管道和重定向的 Bourne shell
用戶內(nèi)存管理:malloc() free()
ucontext.h 支持的用戶協(xié)程
Stacktrace (堆棧跟蹤)轉(zhuǎn)儲(chǔ),段錯(cuò)誤分析
Winix 還支持許多命令(均已提供源碼)
@halfer53 演示了前兩個(gè)命令的運(yùn)行結(jié)果:
(玩貪吃蛇)
(在 bash 中使用管道)
如何運(yùn)行
關(guān)于該系統(tǒng)要如何運(yùn)行,@halfer53 也給出了具體步驟:
1、下載最新的 Rexsimulator:https://github.com/halfer53/rexsimulator/releases(注意:mono 需要在 Linux 環(huán)境下運(yùn)行)
2、下載最新的 WINIX 二進(jìn)制文件 winix.srec:https://github.com/halfer53/winix/releases
3、運(yùn)行 Rexsimulator.exe
4、點(diǎn)擊 Quick Load,選擇 winix.srec
然后就可以加載 Winix 了:
編譯和調(diào)試
如何編譯
編譯之前,首先要在 Linux / WSL 中通過 sudo apt-get install xutils-dev gcc 命令行進(jìn)行安裝。
克隆和編譯:
git clone https://github.com/halfer53/winix.gitcd winixexport PATH=`pwd`/tools/bin:$PATHmake
調(diào)試技巧
調(diào)試 Makefile:與 linux kbuild 相似,Winix 支持 verbose 選項(xiàng),你可以通過將 verbose 設(shè)置為 1 來調(diào)試 Makefile。
make V=1調(diào)試內(nèi)核:kprintf() 將是你的朋友;在 bash 中輸入 trace 以查找串口 2 中的所有系統(tǒng)調(diào)用。
網(wǎng)友:前途可期
@halfer53 開發(fā)的 Winix 也引起了眾多網(wǎng)友的熱議:
評(píng)論 1:Winix 以 RISC 架構(gòu)為目標(biāo),那么隨著 RISC-V 的飛速發(fā)展,偏向 RISC 的操作系統(tǒng)肯定會(huì)為平臺(tái)提供優(yōu)勢(shì)和優(yōu)勢(shì),就像 Linux 在 x86-32 和 x86-64 開始發(fā)展時(shí)所具備的優(yōu)勢(shì)一樣。
評(píng)論 2:我在 90 年代初做了同樣的事情,而我認(rèn)為這是我迄今為止從中學(xué)到最多的項(xiàng)目。雖然我從未發(fā)布過它,因?yàn)槲艺J(rèn)為它的時(shí)代已經(jīng)過去了,但它的確是一個(gè)有趣的練習(xí)。調(diào)試此類開發(fā)的早期階段非常困難,尤其是當(dāng)你在裸機(jī)上而不是在 VM 上進(jìn)行調(diào)試時(shí)。
評(píng)論 3:哈哈,我喜歡你對(duì)這個(gè)項(xiàng)目的描述,聽起來比我的更有希望。
參考鏈接:
https://github.com/halfer53/winix
https://news.ycombinator.com/item?id=27647079
??「點(diǎn)擊關(guān)注」第一時(shí)間收到更新??
