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