Linus vs. Tanenbaum論戰有感

Linus vs. Tanenbaum(http://www.dina.kvl.dk/~abraham/Linus_vs_Tanenbaum.html)


【微核心與巨型核心】

當時的學院派力頂微核心,但是微核心還不太成熟,並且還沒有真正成功的實踐產物。微核心可以將記憶體管理,檔案系統,行程管理等分離出基本核心之外,基本核心只關心中斷處理,指令執行,底層行程管理和外面行程的訊息通信。巨型核心是傳統的體系結搆,整個系統運行在一個核心模式下,負責所有OS的工作。由於沒有了消息處理的負載因此巨型核心性能相對較高。但是微核心因為核心的精簡而更具有可移植性。


論戰之核心模式:

Tanenbaum老先生直接下定結論:微核心更好,並暗諷Linux是一種退步,因為她是使用的學院派認為會被淘汰的巨型核心模式。老先生在第一輪論戰中承認了微核心在性能上的劣勢,但是仍然堅持微核心也可以達到巨型核心的性能。


Linus肯定了微核心在美學上更加優雅,但是他寫Linux的時候Gnu核心還沒有,所以他不可能使用微核心,但是Minix並沒有完美的實現微核心,存在很多缺陷,比如多執行緒Hack,沒有多執行緒FS以及資源競爭等。


Tanenbaum指出缺陷存在的原因是因為Minix的用戶沒有能力承受昂貴的硬體。同時認為性能受限的機器上只有一個job被激活,多線程FS不會有實際意義,反而會增加代碼復雜性;高性能機器,可能有足夠大的緩沖區來保證緩存命中率,在這種情況下多線程也沒有意義。因此多線程FS只有面對磁槃I/O才會變得有意義。Tanenbaum根本否定了多線程FS。

Linus認為OS可用性是很重要的。如果沒有多線程,用戶需要很昂貴的機器。否則就會經常處於等待狀態。並且編程人員也會處理消息處理隊列等復雜的事務。OS不能光說不練,理論模型只是教授們的玩具。


【可移植性】

所有系統在未開始之前,腦海中首先就要考慮移植性的問題。這是一個業已被證明的軟體工程真理。可移植性使得系統面對硬體的改變可以輕松的被重用。既可以減少移植的開銷,也可以減少重新開發或者大量更改系統過多Bug的引入。Linux設計的時候是針對80386的,因此可移植性遜於MinixMinix的初衷是作為一款教學產品,因此其設計堪稱優美,甚至接近完美。由於使用微核心體系結搆,所以其可移植性較好。並且已經被實踐證明。


論戰之可移植性:

Tanenbaum強調OS的可移植性的重要性,因為任何硬體體系結搆都不會永遠存在。如果軟體可移植性差,面對改變的硬體架搆將需要很多改變來使用已存的軟體。他肯定了Minix是可移植的,並且非常容易。他認為Linux是針對80x86設計的,是與其綁定在一起的,因此是一個設計錯誤。


Linus肯定了可移植性的作用,但是他認為OS不能設計的具有過度的可移植性。否則過多的考慮是浪費精力和沒有意義的。只需要有一個統一的接口。因為OS的作用是抽象硬體,所以其應該充分利用硬體的特點。Linux針對80X86設計是他設計的時候的一種折衷選擇。因為他並沒有想到Linux會流行起來。但是因為Linux的核心極小,且是開放原始碼的,在統一接口的情況下,任何人可以改變它,這就給Linux帶來了很好的可移植性。同時指出Minix可移植性較好是因為其擁有很少的fetures。


【開放原始碼與自由】

開放原始碼和自由是軟體發展的趨勢。當然自由並不意味着免費。這賦予了軟體新的價值。一款軟體不再僅僅限於使用權上,人人可以在限制條件下改變他從而提升其價值。正是自由軟體運動,引起了SaaS,云計算等新興模式。Tanenbaum和Linus都意識到這一趨勢。開放原始碼與自由賦予了軟體新的活力。


論戰之開放原始碼與自由:

Linus認為他的Linux是真正開放原始碼,真正免費,真正自由,而不是像Tanenbaum利用Minix賺錢。他認為Tanenbaum並沒有真正把Minix當成一個Hobby。


Tanenbaum認為Minux可以通過商業化被更廣泛的推廣,並且與其他收費軟體相比Minux是很廉價的,在教育方面甚至是非常廉價的。並且Minux的只是在德國才有濃厚的商業化推廣。他一直把設計和技朮放在首位,而忽視可用性和UI。認為Linux太過花哨。從這里看出Tanenbaum並沒有商業化Minix的初衷。之所以Minix不是完全免費的(收取發行費)是因為Minix核心之外還提過了其他的fetures,可選的功能(這也是Linux和其他開放原始碼軟體現在走的路線)。他相信Linus不會真正讓Linux真正自由。


My Opinion

對於微核心和巨型核心之爭,正如Unix開創者和B語言發明人Ken Thompson所說:微核心是一種趨勢,但是巨型核心更容易。而Linix核心開發者之一Ts’o也在回復中說微核心和巨型核心之間存在一個平衡。微核心理論上是更好的,但是實現卻不容易。所以研究一個系統(而不實現)的話可以使用微核心。現在看來微核心和巨型核心依然是並存的。Linux和Window/NT系就是它們的代表。


對於可移植性,我想Linux因為核心小以及開放原始碼,開發者眾多給予了其最大最好的可移植性。當然,可移植性對一款軟體尤其是大型軟體是非常重要的。但是正如Linus所說,過度可移植性是沒有意義的。


對於開放原始碼和自由,現在Linus成為了開放原始碼社區的偉大領袖。正是在Linus的強有力的領導下,linux的核心才得以一次次的升級,並且沒有被完全的商業化。雖然Linux並沒有論戰中Linus聲稱的那樣不商業化,但是其還是走了Minix的路線,其眾多的發行版本就說明了這一點。但是這種自由卻不免費的模式卻賦予了Linux新的活力。一款系統如果真正與商業絕緣,那么它提升改進的空間就不可能太大。它的價值也不會得到充分發揮。商業是驅動力,而社區保留了系統開放原始碼的本質和真正的自由。自由不是免費,免費的午餐也不可能美味。

看過幾遍這場論戰後,想到了一首詩(詞):

《臨江仙》滾滾長江東逝水,浪花淘盡英雄。是非成敗轉頭空。青山依舊在,幾度夕陽紅。白發漁樵江渚上,慣看秋月春風。一壺濁酒喜相逢。古今多少事,都付笑談中。

這場論戰頗有英雄論劍的感覺。這是軟體史上的華山論劍。

我看出了Tanenbaum的作為學院派長老的一種霸氣,時時可以用下結論或者定理的方式給出自己的觀點。同時他也有一種老者的包容與大度。面對Linux的追隨者越來越多,Minix的用戶轉向Linux的趨勢,以及後來論戰的失控,出現牆倒眾人推的態勢,他都泰然自若,從容面對。有人甚至諷刺他為OS理論家或者因Minix收費冒犯他,他僅僅以冷笑話進行諷刺。這也算一種紳士風度了。當然在談到money這個問題上他表現處憤怒。我想這就是一個學者的自尊吧。

我也看到了Linus出 身牛犢不怕虎的氣魄。在大師面前,在學院派都支持微核心前提下依然堅持巨型核心並且得到了支持。與大師爭論的時候不卑不亢,用技朮,用事實說話,處處擊中 (這個詞在此是好的那種)對手要害。並且在大獲全勝的時候適可而止,最後讓對方能夠下得了台。並且在多年後堅守當年的承諾,為自由軟體做着貢獻。


這場論戰沒有失敗者,而為前輩是軟體史上的英雄,也是我們的楷模。作為一名軟體工程學生我為他們感到驕傲。面對如此牛人,雖然難以望其項背,我們依然不應自卑,而應奮發努力,為軟體事業的發展做出自己的貢獻!

arrow
arrow
    全站熱搜

    Bluelove1968 發表在 痞客邦 留言(2) 人氣()