這個(gè)地方的程序員太閑了,寫(xiě)了三個(gè)世界流行的操作系統(tǒng)!
世界上有個(gè)地方,這里的程序員似乎特別閑,特別喜歡開(kāi)發(fā)操作系統(tǒng)。
這個(gè)地方就是北歐。
1991年,芬蘭的程序員Linus Torvalds開(kāi)發(fā)了Linux,現(xiàn)在已經(jīng)統(tǒng)治世界。
2018年,瑞典程序員Andreas Kling為了戒除毒癮,完全從頭兒開(kāi)始,開(kāi)發(fā)操作系統(tǒng)。
圖片
在短短的半年時(shí)間內(nèi),單槍匹馬構(gòu)建了普通程序員幾年,甚至十幾年才能搞定的東西:操作系統(tǒng)內(nèi)核、TCP/IP協(xié)議、GUI框架、進(jìn)程管理器、文件瀏覽器、文本編輯器、界面編輯器、貪吃蛇游戲、繪圖工具......
這個(gè)叫做寧?kù)o(SerenityOS)的操作系統(tǒng),從操作系統(tǒng)內(nèi)核到上層應(yīng)用系統(tǒng),全是重寫(xiě)的,太可怕了。
圖片
今天我們要說(shuō)的是另外一個(gè)芬蘭人Ville M. Turjanmaa的驚世之作:MenuetOS。
圖片
和Linux和寧?kù)oOS不同,MenuetOS的最大特點(diǎn)是:全部用匯編寫(xiě)成!
它小得驚人,最小的版本可以放到一個(gè)1.44M的軟盤(pán)當(dāng)中!
它快得驚人,即使是Intel Pentium MMX 200 MHz,啟動(dòng)時(shí)間也僅需5秒。
你可能會(huì)問(wèn):這是不是一個(gè)玩具操作系統(tǒng)???就像大學(xué)生的畢業(yè)設(shè)計(jì)一樣。
其實(shí)判斷一個(gè)操作系統(tǒng)是不是玩具,我覺(jué)得看這幾個(gè)方面就行。
1.有沒(méi)有圖形用戶界面
簡(jiǎn)單的操作系統(tǒng)內(nèi)核現(xiàn)在非常成熟,要想實(shí)現(xiàn)GUI,那工作量嗖嗖就上去了。
2.是否支持網(wǎng)絡(luò)訪問(wèn)
MenuetOS實(shí)現(xiàn)了TCP/IP,也是用匯編寫(xiě)的!你看看它的API:
rax = 53
rbx = 5
rcx = local port
rdx = remote port
rsi = remote ip address ( in internet byte order )
rdi = mode : SOCKET_PASSIVE or SOCKET_ACTIVE ( defined in stack.inc )
The socket number allocated is returned in rax.
用匯編方式打開(kāi)一個(gè)TCP socket ,太瘋狂了。
MenuetOS也實(shí)現(xiàn)了自己的瀏覽器,雖然還比較簡(jiǎn)單。
圖片
3.能不能跑大型游戲
這是個(gè)重要指標(biāo),能看出它的兼容性和性能。
在MenuetOS上是可以跑QUAKE和DOOM的。
圖片
除此之外,它還實(shí)現(xiàn)了libc,網(wǎng)絡(luò)驅(qū)動(dòng),圖形驅(qū)動(dòng),聲音驅(qū)動(dòng),API全部是匯編。
圖片
用匯編寫(xiě)過(guò)程序的朋友知道,這個(gè)玩意兒實(shí)在是太低級(jí)了。
一個(gè)小小的hello world就需要寫(xiě)一大堆代碼,寫(xiě)出來(lái)的代碼非常難以理解。
圖片
當(dāng)然,匯編是操作系統(tǒng)啟動(dòng)時(shí)不可或缺的部分,但是一旦進(jìn)入內(nèi)核,就可以用C語(yǔ)言來(lái)寫(xiě)其他功能了。
但是MenuetOS的功能全部由匯編編寫(xiě),實(shí)在是不可思議。
Linus寫(xiě)Linux是“Just for Fun”,他自己也沒(méi)想到Linux將來(lái)會(huì)統(tǒng)治世界,能成為一種全新的開(kāi)發(fā)模式。
Andreas開(kāi)發(fā)寧?kù)oOS則是為了逃離毒癮,Ville M. Turjanmaa用匯編寫(xiě)MenuetOS,是因?yàn)閰R編性能高。
他發(fā)現(xiàn)Linux中那些C/C++寫(xiě)的組件用匯編重寫(xiě)時(shí),性能可以提升10%~40%,于是就開(kāi)始重寫(xiě)了。
在我們看來(lái),這純屬于吃飽了飯沒(méi)事干,996那么累,下班了打打游戲,刷刷短視頻多好。
寫(xiě)什么操作系統(tǒng)嘛!給錢嗎?
有開(kāi)源免費(fèi)的Linux在前,再寫(xiě)個(gè)操作系統(tǒng)有啥用?還用匯編?自己折磨自己?
但是Ville M. Turjanmaa根本不管這些,MenuetOS從2000年開(kāi)始開(kāi)發(fā),打磨了整整15年以后,才發(fā)布1.0版本。
然后1.02、1.05、1.15、1.21...... 直到2024年的1.51版。
在匯編操作系統(tǒng)這條道路上,Ville M. Turjanmaa走了24年,也沒(méi)看到他從中賺到什么錢。
可以說(shuō),沒(méi)有巨大的熱情、興趣,沒(méi)有充足的時(shí)間,絕對(duì)不可能堅(jiān)持到現(xiàn)在。
這種不考慮利益,可以完全憑興趣搞事情的環(huán)境,才是創(chuàng)新能不斷涌現(xiàn)的土壤。
這可能就是北歐程序員能寫(xiě)出Linux、MySQL、Chrome V8、MineCraft、cURL、SSH、QT、Unity的重要原因吧!