Linux簡介
Linux,全稱GNU/Linux,是一套免費使用和自由傳播的類Unix操作系統(tǒng),是一個基于POSIX和Unix的多用戶、多任務、支持多線程和多CPU的操作系統(tǒng)。伴隨著互聯(lián)網(wǎng)的發(fā)展,Linux得到了來自全世界軟件愛好者、組織、公司的支持。它除了在服務器方面保持著強勁的發(fā)展勢頭以外,在個人電腦、嵌入式系統(tǒng)上都有著長足的進步。使用者不僅可以直觀地獲取該操作系統(tǒng)的實現(xiàn)機制,而且可以根據(jù)自身的需要來修改完善Linux,使其最大化地適應用戶的需要。
Linux不僅系統(tǒng)性能穩(wěn)定,而且是開源軟件。其核心防火墻組件性能高效、配置簡單,保證了系統(tǒng)的安全。在很多企業(yè)網(wǎng)絡中,為了追求速度和安全,Linux不僅僅是被網(wǎng)絡運維人員當作服務器使用,它還被當作服務器,甚至當作網(wǎng)絡防火墻,這是Linux的一大亮點。
Linux具有開放源碼、沒有版權、技術社區(qū)用戶多等特點,開放源碼使得用戶可以自由裁剪,靈活性高,功能強大,成本低。尤其系統(tǒng)中內嵌網(wǎng)絡協(xié)議棧,經過適當?shù)呐渲镁涂蓪崿F(xiàn)路由器的功能。這些特點使得Linux成為開發(fā)路由交換設備的理想開發(fā)平臺。
Linux有上百種不同的發(fā)行版,如基于社區(qū)開發(fā)的debian、archlinux,和基于商業(yè)開發(fā)的Red Hat Enterprise Linux、SUSE、oracle linux等。
而這一強大的系統(tǒng)誕生不得不提的就是Linux之父。
他是誰?
他就是Linus Benedict Torvalds(林納斯·本納第克特·托瓦茲),著名程序員,Linux內核發(fā)明人。
Linux內核發(fā)展歷史
在當時由于UNⅨ的商業(yè)化,Andrew Tannebaum教授開發(fā)了Minix操作系統(tǒng)以便于不受AT&T許可協(xié)議的約束,為教學科研提供一個操作系統(tǒng)。
當時發(fā)布在Internet上,免費給全世界的學生使用。Minix具有較多UNⅨ的特點,但與UNⅨ不完全兼容。
1991年10月5日,Linus為了給Minix用戶設計一個比較有效的UNⅨ PC版本,自己動手寫了一個“類Minix”的操作系統(tǒng)。整個故事從兩個在終端上打印AAAA...和BBBB...的進程開始的,當時最初的內核版本是0.02。Linus Torvalds將它發(fā)到了Minix新聞組,很快就得到了反應。
Linus Torvalds在這種簡單的任務切換機制上進行擴展,并在很多熱心支持者的幫助下開發(fā)和推出了Linux的第一個穩(wěn)定的工作版本。
1991年11月,Linux0.10版本推出,0.11版本隨后在1991年12月推出,當時將它發(fā)布在Internet上,免費供人們使用。當Linux非常接近于一種可靠的/穩(wěn)定的系統(tǒng)時,Linus決定將0.13版本稱為0.95版本。
1994年3月,正式的Linux 1.0出現(xiàn)了,這差不多是一種正式的獨立宣言。截至那時為止,它的用戶基數(shù)已經發(fā)展得很大,而且Linux的核心開發(fā)隊伍也建立起來了。
Linux之父
Linus利用個人時間及器材創(chuàng)造出了這套當今全球最流行的操作系統(tǒng)內核之一。
現(xiàn)受聘于開放源代碼開發(fā)實驗室(OSDL:Open Source Development Labs, Inc),全力開發(fā) Linux 內核。
Linus 研究生時期開始寫操作系統(tǒng)(大約是 1991 年),那時候個人電腦(PC)雖然興起一些年了,但是還只是小部分程序員和狂熱愛好者的玩具。硬件基本上都靠自己攢,軟件也是用開源系統(tǒng)各種魔改。所以普通人根本沒有折騰 PC 的動力和理由。
Unix 已經霸占了許多生產力場景,唯一的缺點就是貴,而且很多發(fā)行版是閉源的。個人用戶根本不要考慮。
那時候 Linus 自己攢了一套 386,但是找不到好用,廉價/免費的操作系統(tǒng)用。當時社區(qū)里當然也有一票免費且開源的系統(tǒng),但是要不就是兼容性差,要不就是各種坑,要不就是沒軟件,總之各種各樣的問題。而兼容性是最主要的問題,那時候的 CPU 不像現(xiàn)在的流行架構就那么兩種(x86、Arm),那時候叫的上名的架構有十幾種,所以操作系統(tǒng)的兼容性是非常重要的。
Linus 開始自學操作系統(tǒng),發(fā)現(xiàn)了一本很好的教材 《操作系統(tǒng):設計與實現(xiàn)》 ,然后花了一個暑假看完,開始自己寫操作系統(tǒng)。
《操作系統(tǒng):設計與實現(xiàn)》這本書的作者是塔雷鮑姆,寫書的時候已經是業(yè)界大牛了,他在大學為了教學操作系統(tǒng),但苦于學生買不起太貴的 Unix 發(fā)行版,于是自己寫了一個兼容 Unix 標準操作系統(tǒng)(主要是兼容 POSIX 標準),叫 Minix(名字上就很對仗,Universe - mini)。
Minix 這個系統(tǒng)就是為了教學而生的,只要買了這本書,就免費郵寄一份 Minix 源代碼。Minix 為了方便教學,保持代碼的簡潔,塔雷鮑姆拒絕向里面添加太多復雜的功能。所以 Minix 雖然實現(xiàn)得優(yōu)雅,但是社區(qū)的玩家要自己日常用,要魔改很多東西。
Minix 是微內核的。微內核的概念存在幾十年了,而不是 2019 年誕生的。
微內核的結構非常優(yōu)雅,文件系統(tǒng),內存管理,硬件驅動都是以進程形式存在的,而不是內核代碼,這意味著驅動掛了不會帶著內核一起掛。缺點就是系統(tǒng)調用開銷太大,以至于慢到無法接受。所以現(xiàn)在的桌面系統(tǒng),沒有純微內核的。
對于教學系統(tǒng)來說,微內核不是問題,畢竟是教學,不是生產工具。
社區(qū)和 Linus 都很喜歡 Minix,但是都不滿足于 Minix 作者因為教學目的而放棄兼容性和可擴展性。于是 Linus 在自己運行 Minix 的 PC 開始了 Linux 的開發(fā)。Linux 是宏內核的。
Linux 本來不叫 Linux,Linus 是一個很內向的人,不好意思取這么自戀的名字,但是合作者強烈建議用這個名字,所以就用了,x 代表 unix 的聯(lián)系(都兼容 POSIX)。
提一句,Unix 不是為開源和免費而生的,而是為商業(yè)而生的,但是 Unix 的發(fā)展催生了最好的開源環(huán)境(比如 GNU)。
注意,這幾年的社區(qū),屬于『軍閥混戰(zhàn)』,大家都缺一款好用的免費操作系統(tǒng),但并不只是 Linus 想到要解決這個問題,理查德·斯托曼領導的 GNU 組織在 90 年代就一直醞釀一款免費的操作系統(tǒng),因為他們的目的是與商業(yè)的 Unix 對抗,光有一個 GCC 編譯器還不夠,還需要有自己的操作系統(tǒng)。
社區(qū)里各種技術人員也對 GNU 的操作系統(tǒng)非常期待,但是這玩意兒難產了。直到很久之后,Linux 流行起來后,依然沒做出來。
最開始的 Linux 版本,只有幾千行代碼,現(xiàn)在基礎扎實的 CS 本科生,花一段時間都可以看懂,甚至有些 OS 教材就是用 Linux 最初的版本來教學的,比如哈工大李志軍的課程。
Linus 從一開始就不斷在 minix 論壇上發(fā)布自己的進展,搞得論壇上一堆人非常感興趣,于是許多人加入了開發(fā),這時候 Linus 用郵件接收每個人的代碼,然后手動合并。沒過一段時間,minix 論壇上就全是討論 Linux 的了,雖然塔雷鮑姆不是個小氣的人,但是這么搞也讓塔雷鮑姆很不爽
不久之后 Linus 和塔雷鮑姆之間爆發(fā)了一次沖突。
塔雷鮑姆在論壇上寫了一篇文章,論證微內核與宏內核的優(yōu)缺點,其實主要是攻擊宏內核,說宏內核除了性能好點,全是缺點,說 Linux 過時了。Linus 是脾氣暴躁的人,在技術問題上從不妥協(xié)。于是開始嘲諷 minix。Linux 的可移植性比 minix 更好,而且免費開源(minix 需要買書后獲得)。
然后來來去去吵了很多次,具體可以看:
https://www.oreilly.com/openbook/opensources/book/appa.html
只是他們兩個當時誰也沒想到,這次論壇上的口水戰(zhàn)會成為幾十年后人們依然提起的操作系統(tǒng)之爭。
Linus 并不恨塔雷鮑姆,他說后來有一次去了塔雷鮑姆的演講,完了之后拿著那本書想要塔雷鮑姆的簽名,但是沒有等到人。
我想 Linus 多少還是尊敬他的,畢竟是自己學習操作系統(tǒng)的領路人。
在 Linus 和社區(qū)人員的努力下,通過擴展 GCC 支持 Linux,Linux 也兼容了越來越多的平臺。其他各類軟件移植到 Linux 也就變得容易了,尤其是在那個許多軟件以源代碼方式發(fā)行的時代,只要有對應平臺的編譯器,編譯一次就算移植好了。
趕上 PC 發(fā)展的浪潮,但還不夠,畢竟蘋果微軟不是好對付的,商業(yè)操作系統(tǒng)的易用性依然很強。
但是 Linux 開始被各類企業(yè)青睞了,因為不是每個企業(yè)都有錢花高價買一套 Unix 來用,或者是更貴的軟件 + 硬件一體的大型機來用。Linux 讓他們看到了省錢的希望。
GNU 開始支持 Linux,Linux 成為了 GNU 的官方操作系統(tǒng),所以現(xiàn)在叫 GNU/Linux。
可以說 Linux 和 GCC 幾乎是最偉大的兩個開源項目。它們合起來就更強悍了。
GCC 讓軟件方便移植,Linux 軟件生態(tài)就好了,軟件生態(tài)好了用戶就多,用戶多了就讓硬件公司眼饞,各路硬件公司都為 Linux 開發(fā)驅動和各種擴展,以支持自家硬件,這樣用戶就更多。這個倍增效應是很強的。
Linus 在項目達到一定規(guī)模后就不再親自寫代碼了,主要是合并代碼,畢竟全球那么多人提交代碼,他一個人審核合并就夠忙了,親自寫代碼也沒時間。
直到有一天他覺得忙不過來了,審核代碼會遇到很多傻逼代碼和開發(fā)者,于是他開發(fā)了現(xiàn)在最流行的版本控制工具,git,字面意思就是飯桶。
不得不說,他對操作系統(tǒng)發(fā)展方向的把控是精準的。
總結一下,Linux 的成功,以下幾個條件必不可少:
1.Linus 強大的開發(fā)能力;
2.Linus 的項目管理能;
3.Linus 對操作系統(tǒng)發(fā)展方向的把控;
4.一個群雄割據(jù),缺乏免費好用的操作系統(tǒng)的時代;
5.一個不僅群雄割據(jù),缺乏免費好用的操作系統(tǒng),而且程序語言,操作系統(tǒng)理論,編譯器技術發(fā)展到一定程度,個人 PC 持續(xù)發(fā)展的時代;
6.GNU 的系統(tǒng)沒做出來;
7.Minix 死守著『教育』不放;
8.GNU 的支持;
9.全世界硬件廠商的支持;
10.全世界軟件廠商的支持;
11.全世界開源開發(fā)者的巨大貢獻。