天天看點

Linux!為何他一人就寫出這麼強的系統,中國卻做不出來?

閱讀本文大概需要 3 分鐘。

Linux!為何他一人就寫出這麼強的系統,中國卻做不出來?

來自:知乎,作者:默然

連結:https://www.zhihu.com/question/63187737/answer/1415937231

他是誰,Linus!

林納斯・本納第克特・托瓦茲(Linus Benedict Torvalds, 1969 年~),著名的電腦程式員。Linux 核心的發明人及該計劃的合作者。

托瓦茲利用個人時間及器材創造出了這套當今全球最流行的作業系統(作業系統)核心之一。

現受聘于開放源代碼開發實驗室(OSDL:Open Source Development Labs, Inc),全力開發 Linux 核心。

Linus 研究所學生時期開始寫作業系統(大約是 91 年),那時候個人電腦(PC)雖然興起一些年了,但是還隻是小部分程式員和狂熱愛好者的玩具。硬體基本上都靠自己攢,軟體也是用開源系統各種魔改。

是以普通人根本沒有折騰 PC 的動力和理由。

Unix 已經霸占了許多生産力場景,唯一的缺點就是貴,而且很多發行版是閉源的。個人使用者根本不要考慮。

那時候 Linus 自己攢了一套 386,但是找不到好用,廉價 / 免費的作業系統用。當時社群裡當然也有一票免費且開源的系統,但是要不就是相容性差,要不就是各種坑,要不就是沒軟體,總之各種各樣的問題。而相容性是最主要的問題,那時候的 CPU 不像現在的流行架構就那麼兩種(x86,Arm),那時候叫的上名的架構有十幾種,是以作業系統的相容性是非常重要的。

Linus 開始自學作業系統,發現了一本很好的教材《作業系統:設計與實作》,然後花了一個暑假看完,開始自己寫作業系統。

《作業系統:設計與實作》這本書的作者是塔雷鮑姆,寫書的時候已經是業界大牛了,他在大學為了教學作業系統,但苦于學生買不起太貴的 Unix 發行版,于是自己寫了一個相容 Unix 标準作業系統(主要是相容 POSIX 标準),叫 Minix(名字上就很對仗,Universe - mini)。

Minix 這個系統就是為了教學而生的,隻要買了這本書,就免費郵寄一份 Minix 源代碼。Minix 為了友善教學,保持代碼的簡潔,塔雷鮑姆拒絕向裡面添加太多複雜的功能。是以 Minix 雖然實作得優雅,但是社群的玩家要自己日常用,要魔改很多東西。

對了,Minix 是微核心的。對,微核心的概念存在幾十年了,而不是 2019 年誕生的。

微核心的結構非常優雅,檔案系統,記憶體管理,硬體驅動都是以程序形式存在的,而不是核心代碼,這意味着驅動挂了不會帶着核心一起挂。缺點就是系統調用開銷太大,以至于慢到無法接受。是以現在的桌面系統,沒有純微核心的。

對于教學系統來說,微核心不是問題,畢竟是教學,不是生産工具。

社群和 Linus 都很喜歡 Minix,但是都不滿足于 Minix 作者因為教學目的而放棄相容性和可擴充性。于是 Linus 在自己運作 Minix 的 PC 開始了 Linux 的開發。Linux 是宏核心的。

Linux 本來不叫 Linux,Linus 是一個很内向的人,不好意思取這麼自戀的名字,但是合作者強烈建議用這個名字,是以就用了,x 代表 unix 的聯系(都相容 POSIX)。

提一句,Unix 不是為開源和免費而生的,而是為商業而生的,但是 Unix 的發展催生了最好的開源環境(比如 GNU)。

注意,這幾年的社群,屬于『軍閥混戰』,大家都缺一款好用的免費作業系統,但并不隻是 Linus 想到要解決這個問題,理查德斯托曼上司的 GNU 組織在 90 年代就一直醞釀一款免費的作業系統,因為他們的目的是與商業的 Unix 對抗,光有一個 GCC 編譯器還不夠,還需要有自己的作業系統。

社群裡各種技術人員也對 GNU 的作業系統非常期待,但是這玩意兒難産了。直到很久之後,Linux 流行起來後,依然沒做出來。

最開始的 Linux 版本,隻有幾千行代碼,現在基礎紮實的 CS 大學生,花一段時間都可以看懂,甚至有些 OS 教材就是用 Linux 最初的版本來教學的,比如哈工大李志軍的課程。

Linus 從一開始就不斷在 minix 論壇上釋出自己的進展,搞得論壇上一堆人非常感興趣,于是許多人加入了開發,這時候 Linus 用郵件接收每個人的代碼,然後手動合并。沒過一段時間,minix 論壇上就全是讨論 Linux 的了,雖然塔雷鮑姆不是個小氣的人,但是這麼搞也讓塔雷鮑姆很不爽

不久之後 Linus 和塔雷鮑姆之間爆發了一次沖突。

塔雷鮑姆在論壇上寫了一篇文章,論證微核心與宏核心的優缺點,其實主要是攻擊宏核心,說宏核心除了性能好點,全是缺點,說 Linux 過時了。Linus 是脾氣暴躁的人,在技術問題上從不妥協。于是開始嘲諷 minix。Linux 的可移植性比 minix 更好,而且免費開源(minix 需要買書後獲得)。

然後來來去去吵了很多次,具體可以看:

https://www.oreilly.com/openbook/opensources/book/appa.html

隻是他們兩個當時誰也沒想到,這次論壇上的口水戰會成為幾十年後人們依然提起的作業系統之争。

Linus 并不恨塔雷鮑姆,他說後來有一次去了塔雷鮑姆的演講,完了之後拿着那本書想要塔雷鮑姆的簽名,但是沒有等到人。

我想 Linus 多少還是尊敬他的,畢竟是自己學習作業系統的領路人。

在 Linus 和社群人員的努力下,通過擴充 GCC 支援 Linux,Linux 也相容了越來越多的平台。其他各類軟體移植到 Linux 也就變得容易了,尤其是在那個許多軟體以源代碼方式發行的時代,隻要有對應平台的編譯器,編譯一次就算移植好了。

趕上 PC 發展的浪潮,但還不夠,畢竟蘋果微軟不是好對付的,商業作業系統的易用性依然很強。

但是 Linux 開始被各類企業青睐了,因為不是每個企業都有錢花高價買一套 Unix 來用,或者是更貴的軟體 + 硬體一體的大型機來用。Linux 讓他們看到了省錢的希望。

GNU 開始支援 Linux,Linux 成為了 GNU 的官方作業系統,是以現在叫 GNU/Linux。

可以說 Linux 和 GCC 幾乎是最偉大的兩個開源項目。它們合起來就更強悍了。

GCC 讓軟體友善移植,Linux 軟體生态就好了,軟體生态好了使用者就多,使用者多了就讓硬體公司眼饞,各路硬體公司都為 Linux 開發驅動和各種擴充,以支援自家硬體,這樣使用者就更多。這個倍增效應是很強的。

Linus 在項目達到一定規模後就不再親自寫代碼了,主要是合并代碼,畢竟全球那麼多人送出代碼,他一個人稽核合并就夠忙了,親自寫代碼也沒時間。

直到有一天他覺得忙不過來了,稽核代碼會遇到很多傻逼代碼和開發者,于是他開發了現在最流行的版本控制工具,git,字面意思就是飯桶。

不得不說,他對作業系統發展方向的把控是精準的。

總結一下,Linux 的成功,以下幾個條件必不可少:

  1. Linus 強大的開發能力
  2. Linus 的項目管理能力
  3. Linus 對作業系統發展方向的把控
  4. 一個群雄割據,缺乏免費好用的作業系統的時代。
  5. 一個不僅群雄割據,缺乏免費好用的作業系統,而且程式語言,作業系統理論,編譯器技術發展到一定程度,個人 PC 持續發展的時代。
  6. GNU 的系統沒做出來
  7. Minix 死守着『教育』不放
  8. GNU 的支援
  9. 全世界硬體廠商的支援
  10. 全世界軟體廠商的支援
  11. 全世界開源開發者的巨大貢獻

再總結一下,一個人的命運,當然要靠自我奮鬥,但也要考慮到曆史的程序。

好文和朋友一起看~

繼續閱讀