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

“5年”、“自己的操作系統(tǒng)”,這兩點(diǎn)顯然是吸引人們點(diǎn)擊查看的主要原因:帖主憑一己之力,用 5 年時間寫出來的操作系統(tǒng)會是怎樣的?
好奇心被勾起,于是便打開了這位帖主提供的 GitHub 地址(https://github.com/halfer53/winix)。剛看到這個操作系統(tǒng)的簡述,許多人就感到意外了:帖主開發(fā)的 Winix 系統(tǒng)主要是受到了他在大學(xué)時所學(xué)習(xí)的 Minix1 操作系統(tǒng)的啟發(fā)——起初 Linus Torvalds 也是在 Minix 操作平臺上建立的 Linux。
據(jù)了解,這位帖主 @halfer53 是一位來自新西蘭的開發(fā)者,而他在業(yè)余時間開發(fā)的 Winix 是用于 Waikato RISC 架構(gòu)微處理器(WRAMP)的 UNIX 風(fēng)格操作系統(tǒng),也是一個兼顧可用性和性能的混合內(nèi)核。
功能及演示
Winix 雖然僅由 @halfer53 一人開發(fā),但系統(tǒng)功能意外地還挺齊全:
內(nèi)核內(nèi)存管理:虛擬內(nèi)存、頁面映射
進(jìn)程管理:內(nèi)核線程、進(jìn)程創(chuàng)建
異常控制和中斷處理程序
支持大部分 POSIX api 的內(nèi)存文件系統(tǒng)
支持多個管道和重定向的 Bourne shell
用戶內(nèi)存管理:malloc() free()
ucontext.h 支持的用戶協(xié)程
Stacktrace (堆棧跟蹤)轉(zhuǎn)儲,段錯誤分析
Winix 還支持許多命令(均已提供源碼):

@halfer53 演示了前兩個命令的運(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)用。以下是 Winix 支持的系統(tǒng)調(diào)用:

網(wǎng)友:前途可期
@halfer53 開發(fā)的 Winix 也引起了眾多網(wǎng)友的熱議:
評論 1:Winix 以 RISC 架構(gòu)為目標(biāo),那么隨著 RISC-V 的飛速發(fā)展,偏向 RISC 的操作系統(tǒng)肯定會為平臺提供優(yōu)勢和優(yōu)勢,就像 Linux 在 x86-32 和 x86-64 開始發(fā)展時所具備的優(yōu)勢一樣。
評論 2:我在 90 年代初做了同樣的事情,而我認(rèn)為這是我迄今為止從中學(xué)到最多的項(xiàng)目。雖然我從未發(fā)布過它,因?yàn)槲艺J(rèn)為它的時代已經(jīng)過去了,但它的確是一個有趣的練習(xí)。調(diào)試此類開發(fā)的早期階段非常困難,尤其是當(dāng)你在裸機(jī)上而不是在 VM 上進(jìn)行調(diào)試時。
評論 3:哈哈,我喜歡你對這個項(xiàng)目的描述,聽起來比我的更有希望。
參考鏈接:
https://github.com/halfer53/winix
https://news.ycombinator.com/item?id=27647079
- EOF -
長按進(jìn)入小程序,進(jìn)行打卡簽到 (更多精彩值得期待……)
最近熱文: 我承認(rèn) IDEA 2021.3 有點(diǎn)強(qiáng)! 2021高校畢業(yè)生薪酬Top100出爐 ! 谷歌:. apk 成為歷史! 為什么有些大公司技術(shù)弱爆了? 2T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,人工智能,考研,軟考,英語,等等。在公眾號內(nèi)回復(fù)「資源」,即可免費(fèi)獲取!回復(fù)「社群」,可以邀請你加入讀者群! ??給個「在看」,是對我最大的支持??


