008 | linux發展歷史-04
本文為《跟馬哥學Linux》系列文章的第八篇,上一篇文章為《 Linux發展歷史-03》。
最早期的時候pdp-7上面跑的unix就已經具備了今天很多操作系統當中的核心特性,實際上unix從最早設計開始從那么小那么簡陋,雖然說是上個世紀六十年代末,大概這個時間是1969年前后設計大產品,但已今天的眼光來看unix仍然是設計上沒有硬傷的一款產品,那就意味著這款產品設計是非常好的非常精良的,其實unix的研發也就花了兩天的時間在寫的時候,而unix真正引起人們關注的或者說給我們生產環境,給我們帶來從生產力的是,1971年的時候,bell實驗室他需要的為自己的內部一個專利部門提供一個文字處理的程序這個文字處理的程序叫nroff,這個程序的運行需要一個底層的系統,需要開發這么一個系統,而在pdp-12上跑的系統對于nroff來講并不理想,所以后來Ken幾個人就把這個項目給承包下來了,并添加到他的unix上來啟動這個程序。
并在寫nroff的過程中unix也不斷的改進。萬幸的是,不久當時管理層還沒有意識到,只是覺得nroff這個程序還不錯,沒有意識到unix在隨后到底能夠發展出一個這么讓人驚奇的東西來,所以呢,這個時候還沒有把unix給商業化的想法。而時間走到1972年前后,unix的裝機量已經達到10臺并且在bell實驗室廣為流行,。
剛剛說過,最初unix使用匯編語言寫成的,而各種應用程序使用解釋性語言b語言編寫,B語言的特點在于非常小瞧,短小精悍,但是他是一種解釋性語言功能還不夠強大,后來bell實驗室的另一位年輕人Dennis Ritch,這個家伙就把B語言增加了一些像什么數據結構,數據類型,等等進而把B語言升級了稱為B+語言,不過后來人們覺得B+不好聽就改成了C語言,所以這個作者花了一點時間把B鼓搗鼓搗改進了一番成為C,這個就是到今天為止三四十年來依舊流行的編程語言之一。那個時候從生產出來的工具來看就有那么強悍的生命力我們不得不說這代工程師都是天才級的人物。
這個C語言就是從B語言寫過來的。而1973年74年的時候Ken與Dennis Ritch兩個人決定聯合起來,用C重寫整個unix,匯編語言與機器的耦合度非常大,如果我們是給PDP-7寫的裝到PDP-8上都跑不起來,所以與底層設備的程度太緊密,后來有了C語言以后,C語言其實適合底層的CPU是沒有關系的,有關系的其實就是編譯器,編譯成特定主機上的匯編就可以了。比如說我們現在有多種電腦設備。我們為了以示區別有不同的圖形,第一種,第二種,第三種,
現在我們要寫一個unix讓他在這三種主機上都能跑起來怎么辦的,開發一個版本給第一種,在開發一個版本給第二種,在開發一個版本給第三種,他們之間的代碼的相同量很有可能就不足30%,剩下70%都得重新編寫因為底層不一樣,指令也完全不一樣思路可以演習,但是實現必須重構這就效率太低了,為了避免這樣的情形,我么給他加一個中間層,這就是高級語言。
加了這么一個中間層任何一個語言寫的程序都可以在每一種機器上運行但是并不意味著這三種機器就沒有區別了,他們的區別依然存在。為什么程序員寫的一個程序可以在這么多個系統上運行呢應為有中間層所以程序要寫一款程序,這個中間層負責如果要在第一種上運行這個中間層就把他翻譯成適用于第一種系統的,如果要在第三種上運行這個中間層就把他翻譯成適用于第三種系統的,所以這個家伙是多能的,所以他能為C語言提供各種平臺提
供專用版本。
你是說英語的,就把他翻譯成英語,你是說德語的,就把他翻譯成德語,你是說法語的,就把他翻譯成法語,這個加過是一個通曉各種語言的全才的翻譯,這就是中間層,而這就是編譯器,他能完成這種功能,所以一個高級語言,當你寫完程序以后不用擔心底層環境不一樣只要編譯器能夠應付那種硬件設備那么就能幫你把你寫的程序轉換成特定硬件設備能運行的程序,這個家伙就叫做編譯器,所以他至關重要,而C語言的編譯器的的確確能夠支持多種不同的平臺,我這么說還不夠精確,因為底層上還有操作系統呢從不需要完完整整的考慮到底層硬件設備的比一樣的地方,因為我們還有匯編,還有底層系統。
這樣說是為了讓各位能夠更容易的理解問題,有意這么描述的。C與硬件沒關系了所以就把unix本來是用個匯編語言寫的只能用在PDP主機上改成完全用C寫只有其中一小部分代碼仍然用匯編寫所以是的這個程序將來我們想裝在任何系統上,只要編譯器支持他就能夠支持硬件設備了。所以一下子使unix的適用范圍快翻起來。不過這在當時1973年74年這么做使非常冒險的做法,因為,那個時候的計算機的運行性能很差,而語言的越高級,他浪費的資源那也大,計算機運行起來就越慢。所以那個時候地做法,相當于飲鴆止渴但他們就這么堅持做了而且確實冒了很大風險,大概時間走到1979年的時候,據說Dennis Ritch在一篇廠商種說到unix今天的成功就是當年用C語言改寫帶來的,他們那幫人有魄力在當時完成了將Unix用C語言編寫的方式而且雙方合起來發飆了一篇論文,當時發表在《美國計算機通信》雜志上,第一次公開展示unix,時間是1974年前后,第一次把unix公之于眾,全球人民全知道unix了,第一次走出bell實驗室。公之于眾后,很多大學和研究機構讀到了這篇文章,他們發現bell居然研制了這么一個短小精悍地東西,他們都期望拿來學習和研究使用。
不過,當時的bell實驗室屬于AT&T美國電報電話公司,當時美國最高人民法院正在反壟斷,正在訴訟ATMT,那個時候AT&T被反托拉斯法裁定,不能銷售電報電話意外的任何產品,不但不能銷售,別人要你還得給,而那個時候很多大學研究機構都想要Unix而他們沒有權限去銷售還得無償給。所以當那些人發來郵件給Ken說我想要一份unix,當時ken什么事也不做,沒事就沒事就弄個磁帶機拷貝unix給對剛寄過去。這件事干了很長一段時間,這個時候離個人機出現還有一段時間,個人PC機出現是在80年代了這會還在70年代中期那個時候這些大學和研究機構獲得了unix以后都是如獲至寶,花很多時間來研究unix,并將他們的研究成果有回饋給bell實驗室,使得bell在這一方面unix的發展非常快,而現在unix公認的完整的第一個發行版本是第七版而且unix起的名很獨特就叫做system v7這個時候都已經在高校中都已經非常流行了這個時間是在1979年前后。
unix這個產業也開始出入端倪了大概在1978年第一個以商業方式包裝發行,有些人研究發現,我如果在這個基礎之上提供更好的服務,我去買點前恐怕還是有人買的所以1978年全球第一家包裝發行商業版unix的公司誕生了。叫做西雅圖數字公司sco開始包裝發行unix并且開始出售第一個商用版的c編譯器,而且1980年也在美國西雅圖一家更為不起眼的公司成立了叫做Microsoft,當時只有兩款產品,一個事B編譯器,兩一個也在賣Unix,叫做XENIX,其實就是unix的變種。另外在unix發展歷史當中最早加入進來并且到今天為止對unix發展歷史上做出了卓越貢獻的是美國加州大學的伯克利分,芭芭拉分校都非常有名,在計算機的歷史上都做了很大的貢獻。而ken這個家伙,公司都很邪惡,工程師一旦做出巨大貢獻以后都會放年假因此,ken大概在1976年年休的時候到了伯克利分校任教,因此伯克利分校在unix研究上更是走在了前列而伯克利分校有個研究生叫Bill joy在unix上花了很長時間,并且他們還成立了BSRG組織就是伯克利操作系統研究小組大概在1977年發布了由BSRG發行的unix并且命名為BSD為什么叫做BSD呢?意思是伯克利系統分發版,所以簡稱為BSD。
1980年前后已經稱為伯克利加州大學校園網的核心系統之所以伯克利走的這么激進主要還是因為Ken在那呆過1年,另外1980年前后美國國防部高級研究計劃署叫做DARPA,他需要請人在unix環境下的實現TCP/IP協議棧其實本來DARPA是打算在DEC公司VAX系統上的VMS上來實現的。DEC公司生產的小型機由PDP,還有一種叫做VAX,而且VAX有他自己的操作系統叫做VMS,也是個多任務系統本來DARPA想在VMS上研究TCP/IP協議。
但是他們擔心VMS這個商業系統不會把源碼給我無法改進,那個時候unix還是開放的,他們可以沒有阻礙的拿到unix的源代碼,所以他們就把這個項目,就是研究TCP/IP的合同遞交給了伯克利的BSRG,因此1983年的時候tcpip正式誕生在了,BSD的unix的系統上所以tcp/ip協議就是在unix上被研發出來的能更好的整合在unix系統上。有tcp/ip之前主機要想互相通信是非常困難的,tcp/ip讓整個世界發生了天翻地覆的變化,比如說現在我們構建的各種網絡通信都是在tcp/ip協議棧上實現的。這是1980年到1983年之間。