為什麼現在沒有人開發新的OS內核?目前只有linux、unix、window、mac等,很希望有人能開發一個新的內核出來


恰恰相反,不管是公司騙錢還是學術界論文灌水還是個人腦洞大開寫著玩,哪個時代都不缺各式各樣的內核。問題在於,內核就算再多,生態環境就那幾個,比如在x86上,也就是win linux mac這仨,win和mac還不開源。所以這種故事的結尾一般這樣的,天賦異稟骨骼清奇的小明同學寫出了一個各種nb的內核,然後他把gcc移植上去了,然後他把又把busybox移植上去了,然後.........最後他把gnome/kde都移植上去了,於是有一種看著用著和linux或者freebsd沒啥區別系統誕生了..........


有很多各種各樣的OS kernel,比如TinyOS,比如SELinux,比如L4和各種其他沒有流行起來的micro-kernel……

另外其實還有很多類kernel的中間層部件,比如VM monitor,比如Google Chrome的kernel,比如Java VM……

再較個真,Windows曾經有好幾種不同的kernel版本,現在的Windows的kernel是從NT的kernel繼承過來的。蘋果的各種Mac搭的OSX系統的kernel的名字叫XNU。

其實我經常不是特別理解為什麼很多人對OS kernel這麼情有獨鍾,似乎是一種情節一樣,可能是因為很多人覺得寫kernel code是一件很牛逼的事情吧。因此能寫一整個嶄新的kernel出來那肯定是一個浪漫的英雄史詩了!

其實一個kernel設計和開發沒有那麼神秘,很多都是很細瑣的針對具體硬體的介面設計和實現優化,往往工作量很大,但是做出來的東西差異性很小,因為硬體雖然具體實現細節可能千差萬別,但總的說來還都是通用部件,在硬體架構沒有什麼大變動,大部分應用需要都能滿足的情況下,OS架構需要變動的地方很少,而且由於在很底層,所以一點點小變動往往要付出的上層代價特別大,因此對各種設計變動都會非常謹慎。現在大部分的和kernel相關的開發都是給各種各樣的新硬體寫各種各樣的驅動。OS kernel的基本使命是把硬體的稜角藏起來,給應用提供更友好更普適的平台和介面,而這個使命在現階段處於基本完成的穩定狀態,不存在一個重起爐灶的嶄新kernel的需求。

什麼時候才會有非常不同的新kernel出現併流行開來呢?我覺得有兩種可能。

一種可能是硬體生態發生了很大的變化,比如說有一天FPGA成本突然大幅度降低,效率大幅度提高,所有硬體忽然變得高度programmable,應用程序忽然可以高速高效地自定義自己的高度並行化的指令集,或者可能實際能使用的量子計算機忽然來了,計算模型全變了,那麼這將是一個新kernel誕生的絕好歷史時機。

另一種可能是人們對計算的需求和認識有了很大的變化,比如哪個做汽車的忽然開竅想通了在每個汽車裡都裝了若干隨時能上網的通用計算機,緊接著各種做飛機的做家電的蓋房子的開旅館的開商店的也都開始跟風,能方便上網的計算機無處不在到處都是,普適計算真的來到人類社會了,逛街還要隨身帶獨立收信號的手機或者平板忽然成了一種傻逼的行為,因為到處都有屏幕,到處都能上網,每個人的IM都幾乎永遠不會斷線。為了適應這種計算環境的新變化,一個OS最自然的選擇當然是全部跑在雲端,然後用戶的信息跟著用戶的社會活動在各種設備之間無縫地跟來跟去,OS的各種介面因此都最好直接對接雲服務,可能一個新的面向雲端的kernel介面架構就在這普適計算的大潮中脫穎而出了。

其實即便是這兩種可能,也已經有各種科研在為它們的到來做準備了,只不過可能還沒廣泛產品化而進入大眾的視線而已。即便是新kernel,也必將是站在各種歷史kernel設計的肩膀上,而不會憑空跳出來。同樣的道理,今天的linux雖然和20年前的linux一脈相承,但其實已經是完全不同的一個linux了。


micro kernel可以參考這裡:
http://os.inf.tu-dresden.de/L4/
Barrelfish


GNU Mach / GNU Hurd 需要你。


不是大家沒有創造新內核的野心,而是現在的類unix內核包容性太強,什麼特殊的特性都可以包容進去。比如現在有兼容windows內核不需要虛擬機就可以啟動windows應用的linux內核,有支持量子計算特性的內核,總之一切可以定製,如同武俠絕技吸星大法一樣,因此也沒有重新發明輪子的必要了


自己動手寫操作系統 (豆瓣)


這事兒不是說說就能搞定的。不是砸錢,叫一幫人來就能搞定的。


為什麼沒有新宗教,只有耶穌,默罕默德,釋迦摩尼,很想一個牛B的人來領導全人類,不再有疾苦戰爭,世界充滿愛


其實挺多的,只是針對特定領域不被很多人知道罷了。比較牛逼的比如:seL4,聲稱某個版本源碼經過了完全的形式化證明的;再比如barrelfish,針對多核的OS,每個核心一個內核。


兩個平台我都嫌多了,要成為資深的系統軟體開發就必須對操作系統平台非常熟悉。


生態是開發者決定的,以前開發者少的時候還有機會,現在開發者都有固定的群體了,你再去開發新的開發者太難了


越是底層越是相通,因為到了軟體和硬體的結合層次,基本上兩大os都沒什麼區別了,這是由CPU架構決定的,中斷門,選擇子,任務段什麼的,真的沒法搞出什麼新的os,稍微往上一個層次還有點區別,內存管理,任務管理,設備管理等這些模塊已經發展了這麼多年,單純的基於軟體的可改進之處已經微乎其微了,不是沒人去做,只是真的去做了你就會發現…卧槽,他們兩家已經把所有的優勢都挖掘完了,我要麼按照他們的來搞一套,要麼另闢蹊徑搞個性能等各方面都不如他們的。

你說怎麼搞?


多得很,但都成不了氣候,內核只是os的一部分,要讓一個os普及,需要的是應用程序。應用程序的市場推動力遠遠超過一個內核。舉個例子,你買遊戲機是為了那些遊戲,你並不在意他的os。索尼和微軟的遊戲機都有自己定製的內核和os,但這些都不是賣點。


推薦閱讀:

Terminal 和 Console 的區別是什麼?
如何讓我不再折騰 Linux?
為什麼 UNIX 下刪除一個目錄特別慢?
Windows 為什麼要有註冊表而 Unix 就不需要?
UNIX 文化中有哪些元素?

TAG:Linux | Unix | 操作系統內核 |