那麼多國家「國產操作系統」為什麼都要用linux內核?

前不久不是還有說linux內核有後門的嗎?


因為做驅動實在是太麻煩了

沒做過操作系統的developer都認為開發操作系統最複雜的是內核,這話說的也沒錯,但也不能說完全對,開發操作系統最麻煩的地方在於驅動。

一個經典的操作系統內核,刨除驅動,可能就幾百KB到幾MB之間,不會太大。這就是說,如果有一個團隊,技術足夠NB的話,設計一個差不多的(注意:我說的是差不多的,可不是說完美的)內核不需要消耗太長時間(不會超過3-5年吧,快的話1-2年也是有一定可能的)。

但是驅動真是個大麻煩,翻翻Linux內核源碼,真正的內核調度器、內存管理的代碼沒多少,大量的代碼都是驅動,因為要兼容各種各樣的硬體。

同樣的,Windows的內核文件是NTOSKRNL.EXE,也是幾MB大小,但再看看system32drivers下面有多少驅動?

開發驅動和開發內核不同,開發驅動需要硬體廠商給資料,並非所有廠商都願意合作,所以後果就是一個OS用的越廣泛,廠商越是願意協助開發對應的驅動,一個OS用的越少,廠商越不願意給資料。

目前比較成熟的內核里,驅動比較多的就只有Linux,所以Linux的驅動也越來越多,而如果要另起爐灶,寫內核容易,寫驅動難啊。

而一個操作系統想用起來,沒有硬體支持是不行的,所以最終各個國家/企業凡是要「自主研發」操作系統的時候,首先想到的就是Linux,原因也是因為實在沒有辦法去寫那麼多驅動。

寫內核,在x86平台上,感謝intel公開了這麼多的資料,一個計算機專業畢業的稍微NB一點的學生給一年的時間都能寫出來一個能用的內核(僅限於能用,好不好另說),而且資料特別多。

寫驅動,舉個例子:XHCI的驅動,不給資料,別說1年了,十年都寫不出來,甚至可能XHCI是什麼都不知道(註:這是USB3.0控制器)

當然了,要是有足夠多的錢,能不能把驅動和內核都重寫了?能,肯定能,但那肯定是要很多人和很多錢。

微軟有那麼多的工程師,大部分都是寫驅動的,並且還有大量代碼能重用的情況下,也是隔1-2年才出一個版本,如果從Windows1.0開始算,都快有30年了,這麼多年才做出這麼多驅動(並且還有一些不是他們自己做的),可見開發驅動得投入多少人。


你自己掰開手指數數,除了linux內核,還有什麼內核可用?

unix?mac?windows?

自己自主創新開發一個?別開玩笑鳥!

問題應該不是「為什麼都要用」,而是「為什麼必須用」


Linux還有個好處就是可以裁剪,做成適應於當前硬體的系統


為什麼不用?

為什麼要去浪費納稅人的錢?


因為開源。可以想想為什麼大多數國產智能機器操作系統都基於Android.

ps: Android底層也是linux


推薦閱讀:

接入一根100Mbps的網線,經過交換機後,是否會遭遇瓶頸呢?
win10有必要安裝360嗎?
計算機是如何通過010101來呈現這個浩瀚的網路世界的?
win7旗艦版忘記開機密碼怎麼辦?
電腦右下角出現了「Windows 7 內部版本 7600 此 Windows 副本不是正版」是什麼意思?怎麼解決?

TAG:互聯網 | 操作系統 | Linux | 計算機 | Linux內核 |