我知道Linux是托瓦斯發(fā)明的。 為什么托瓦斯可以發(fā)明Linux? 今天讓我們談?wù)劇?/p>
與Minix之間
林納斯.托瓦斯的外祖父是赫爾辛基大學的統(tǒng)計學學家,他的外祖父為了讓自己的小孫子學點東西,從小就將托瓦斯帶到身邊來管理一些微計算機。在這個時期,托瓦斯接觸了匯編語言那是一種能夠直接與芯片交互的程序語言,也就是所謂的低級語言,用戶必須很了解硬件的架構(gòu),否則很難使用匯編語言編寫程序。
在1998年間,托瓦斯順利進入了赫爾辛基大學,并選讀了計算機學系。在上學期間,因為學業(yè)的需要與自己的興趣,托瓦斯接觸到了UNIX這個操作系統(tǒng)。當時整個赫爾辛基只有一臺最新的UNIX系統(tǒng),同時僅提供16個終端。早期的計算機僅有主機具有運算功能,終端僅負責輸入與輸出而已。在這種情況下,實在很難滿足托瓦斯的需求,因為,光是等待使用UNIX的時間就很耗時,為此,他不禁想到:“我何不自己搞一臺UNIX來玩?”不過,就如同斯托曼當初的GNU計劃一樣,要寫內(nèi)核程序,談何容易。
不過,幸運之神并未背離托瓦斯,因為不久之后,他就知道有一個類似UNIX的系統(tǒng),并且與UNIX完全兼容,還可以在Intel 386機器上面運行,那就是Tanenbaum教授為了教學需要而編寫的Minux系統(tǒng)。他在購買了Intel 386的個人計算機后,就立即安裝了Minux這個操作系統(tǒng),另外,Minux系統(tǒng)提供源代碼,所以托瓦斯也通過公布的源代碼學習到了很多的內(nèi)核程序設(shè)計的概念。
對386硬件的多任務(wù)測試
事實上,托瓦斯對于個人計算機的CPU其實并不滿意,因為他之前接觸的計算機都是工作站型的計算機,這類計算機的CPU特色就是可以進行“多任務(wù)處理”的能力。什么是多任務(wù)?理論上,一個CPU在一個時間內(nèi)僅能運行一個程序,那如果有兩個以上的程序同時出現(xiàn)在系統(tǒng)中呢?舉例來說,你可以現(xiàn)在的計算機中同時開啟兩個以上的辦公軟件,例如電子表格與文字處理器,這個同時開啟的操作代表著這兩個程序同時要交給CPU來處理。
CPU一個時間點內(nèi)僅能處理一個程序,那怎么辦?沒關(guān)系,這個時候具有多任務(wù)能力的CPU就會在不同的程序間切換,還記得以前講過的CPU頻率嗎?假設(shè)CPU頻率為1GHz的話,那表示CPU一秒鐘可以進行10的9次方工作。假設(shè)CPU對每個程序都只能進行1000次運行周期,然后就得要切換到下個程序的話,那么CPU一秒鐘就能夠切換10的6次方次(當然,切換工作這個事情也會花去一些CPU時間,不過這些先暫時不做討論。)這么快的處理速度下,你會發(fā)現(xiàn)兩個程序感覺上幾乎是同步在進行。
早期的Intel x86架構(gòu)計算機不是很受重視的原因,就是因為x86的芯片對很多任務(wù)的處理不佳,CPU在不同的工作之間切換不是很流暢。但是這個情況在386就是哪幾推出后,有很大的改善。托瓦斯在得知新的386芯片的相關(guān)信息后,他認為以性能價格比的觀點來看,Intel的386相當便宜,所以在性能上也就稍微可以將就將就,最終他就貸款去買了一臺Intel的386來玩。
早期的計算機性能不如現(xiàn)在,因此受節(jié)制的計算機性能成為一種工程習慣。 Tobas自己很早就玩匯編語言。 匯編語言與硬件緊密相關(guān)。 “我一直熱愛性能。” Tovas并未減少測試386計算機以充分利用386性能的時間。 它的主要測試是386的任務(wù)測試。 首先,他創(chuàng)建了三個程序。 一個程序連續(xù)輸出A,一個程序連續(xù)輸出B,最后一個程序在兩個程序之間交替。 他同時運行了這三個程序,發(fā)現(xiàn)ABABAB在屏幕上流暢顯示。他直到成功了。