011 | Linux基礎(chǔ)入門
本文為《跟馬哥學Linux》系列文章的第十一篇,上一篇文章為《 Linux發(fā)展歷史-06》。
前面我們講了unix,Linux,macos等操作系統(tǒng),以及所謂的Linux之間的悲歡離合的故事。而且我們知道System V Unix與BSD二者之間發(fā)起了一場曠日持久是官司,把BSD告上法庭,開始unix內(nèi)戰(zhàn)的第一階段,后面發(fā)展到第二階段,第二階段主要是AT&T持有了sun公司20%股份后,AT&T與幾家公司,如IBM、DEC、HP等公司,創(chuàng)立了開放軟件基金會,他們彼此之間又對抗了第二階段。不管怎樣,他們之間的官司打了很久。這個官司進行中,微軟的windows茁壯成長起來,讓比爾蓋茨賺到了幾十億美金。而在此期間,minix誕生了,但他沒能扛起去拯救GNU組織當中,希望有這么一個操作系統(tǒng)出現(xiàn)的大旗。再后來,1990年前后,BSD開始進行反擊,因為BSD在于System V Unix大戰(zhàn)當中,已經(jīng)把System V Unix相關(guān)代碼清除殆盡,從此,與System V Unix再無任何瓜葛。因此,他們認為他們當初創(chuàng)建的使命已經(jīng)圓滿完成,之后Jolitz移植到x86系統(tǒng)上,x86平臺就是因特爾公司所生產(chǎn)的CPU,也包括后來AMD的兼容PC架構(gòu),成為X86系列。到那個時候,BSD開始能夠嘗試運行在X86系列的非專用的小型機上,于是整個unix領(lǐng)域迎來了第一縷曙光,不過這個人的項目應該是在幾個商業(yè)公司支持下研發(fā)的,這幾家公司更希望以閉源的方式,以商業(yè)授權(quán)的方式將移植后的BSD向外發(fā)行,Jolitz不滿,于是他把自己一年多的成果完全刪了,并退出項目,所以,BSD項目在1991年夭折。不過,這個項目在后來的項目中再次出現(xiàn),
不過在1991年8月,芬蘭大學生Linus Torvalds宣布成立Linux項目,他最初研究Linux的主要原因是學校的unix太貴,并且他說早知道有386-BSD項目,他不會去研究Linux系統(tǒng)的不過386-BSD項目在1992年重新活過來的時候,Linux已經(jīng)誕生好幾個月。386-BSD項目在今天確實還在使用中,而且在某些領(lǐng)域,甚至在Linux成熟之前,像早期的網(wǎng)易的運維當中,他們的WEB服務器都是跑free BSD系統(tǒng)。在那個時候,確實看不出來誰優(yōu)誰劣,現(xiàn)在具有壓倒性的優(yōu)勢。更重要的是,1991年前后,http協(xié)議誕生。隨著tcp/ip協(xié)議的成熟和http協(xié)議誕生,互聯(lián)網(wǎng)呈現(xiàn)了大爆炸的發(fā)展。而Linux正好在那個時候宣布成立。隨后的幾年中,由于Linux遵循GPL協(xié)定,任何人可以任意獲取和修改,互聯(lián)網(wǎng)上就有上百名黑客級人員,在獲取到Linux源碼后,給他注入研發(fā)實力。1993和1994年互聯(lián)網(wǎng)大爆炸的時代,Linux和BSD的重要性才終被整個技術(shù)屆所了解,被整個unix領(lǐng)域所正式面對,但不幸的是,對BSD支持來講,AT&T對BSD的訴訟耗費了大量的時間,所以使得關(guān)鍵的博客運維開發(fā)者,在此之前為了避免官司纏身,紛紛轉(zhuǎn)向Linux陣營。所以,BSD正式?jīng)]落。把最好的時間讓給了Linux。Linux開發(fā)與BSD不同的是,Linux完完全全根植在互聯(lián)網(wǎng),所有的作者都來自互聯(lián)網(wǎng),并借助于Larry Wall ,他研發(fā)過patch工具,patch工具能使得源代碼在分發(fā)時不用整包進行,利用diff制作補丁,利用patch進行打補丁操作,使得互聯(lián)網(wǎng)協(xié)同開發(fā)成為可能。因此,借助于Larry Wall研發(fā)的patch工具,Linux在互聯(lián)網(wǎng)爆炸時代,非常茁壯成長起來。1994年,Linux的1.0版本正式發(fā)布。在這四年中,Linux發(fā)展非???。
接下來,描述一下一個操作系統(tǒng)的基本結(jié)構(gòu)。為了能夠使得多個程序運行起來,我們需要一個通用的監(jiān)控程序,監(jiān)控其他程序的運行。這個程序自己不負責具體的事情,不負責特定的能夠滿足用戶需要的活,他僅僅是把能夠滿足用戶需要的多個活,在同一臺電腦上運行起來,實現(xiàn)多任務的功能。當初就是這個原因來研發(fā)mac的。
Linux的任務雖然比mac簡單很多,但沿用了mac用于實現(xiàn)監(jiān)控其他程序,支持多任務的特性,依然保留了下來。意味著unix其實是一個工作在硬件之上的監(jiān)控程序。這個監(jiān)控程序只是負責把底層硬件驅(qū)動起來,并把底層硬件所提供的各種功能虛擬化,
比如把內(nèi)存切割為N段,把CPU所提供的時間片切成N片,供多個程序輪流使用,把底層的硬件資源切割成能分配給多個應用程序的組成部分,并監(jiān)控這個程序是如何使用這些資源的,
同時如何啟動一個程序,如何關(guān)閉一個程序,也都是由監(jiān)控程序負責完成,所以監(jiān)控程序取得了整個程序的應用權(quán),把硬件的本來面目,虛擬成了軟件的面目,
把CPU的計算能力切割成了N片,并且輪流使用,并且第一片供第一個程序,假如一共有三個程序,時間是不動的。第二片給第二個程序,第三片給第三個程序,然后依次類推,第四片又給第一個程序,完成復用,這個方式成為時序復用。
對于內(nèi)存來講,他通過將空間切割成多片的方式,分配給多個應用程序,從而完成內(nèi)存資源的復用。這種復用帶來的結(jié)果是,能夠把一個資源切割成N塊,
所以,我們可以認為,每個程序都獨立占了CPU,只是占了cpu的一部分。第一個程序也占了內(nèi)存,也只是占了一部分。站在程序的角度來看,他以為自己是唯一跑在這個計算機的程序,他不知道其他程序的存在。他發(fā)現(xiàn)自己的程序的使用是通過操作系統(tǒng)實現(xiàn)的,認為只有自己和監(jiān)控程序,每一個程序都是這樣,因此,監(jiān)控程序為每一個程序虛擬出美好家園。