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