細(xì)說Linux
我們經(jīng)常糊涂地將Linux內(nèi)核與Linux操作系統(tǒng)區(qū)分開。對(duì) Redhat、CentOS和Ubuntu更加暈頭轉(zhuǎn)向。 今天,我們介紹Linux操作系統(tǒng)的相關(guān)概念、開發(fā)歷史和總體架構(gòu)。
什么是Linux及內(nèi)核
在1991年,有個(gè)名為Linus Torvalds的學(xué)生在互聯(lián)網(wǎng)上發(fā)布了一個(gè)名為Linux的操作系統(tǒng)。說它是操作系統(tǒng)是因?yàn)樗鼘?shí)現(xiàn)了對(duì)計(jì)算機(jī)核心硬件的管理。但是它有不能稱為一個(gè)真正的或者說可用于生產(chǎn)的操作系統(tǒng),因?yàn)樗粚?shí)現(xiàn)了對(duì)計(jì)算機(jī)資源的簡單管理(也就是實(shí)現(xiàn)了一個(gè)操作系統(tǒng)內(nèi)核),卻沒有編譯工具等其它操作系統(tǒng)必備的工具集成到其中。
在Linux的早期,Linux這個(gè)名詞其實(shí)就是Linux操作系統(tǒng)內(nèi)核的簡稱。Linux內(nèi)核并非操作系統(tǒng)而是實(shí)現(xiàn)了對(duì)計(jì)算機(jī)硬件的管理,是操作系統(tǒng)的基座,通常包括如下幾個(gè)方面:
內(nèi)存管理進(jìn)程管理,其實(shí)就是對(duì)CPU的管理設(shè)備管理,例如鼠標(biāo),鍵盤等文件管理,也就是對(duì)硬盤等存儲(chǔ)設(shè)備的管理,抽象為文件系統(tǒng)網(wǎng)絡(luò)設(shè)備管理,網(wǎng)絡(luò)設(shè)備可以看作一個(gè)特例
由于Linux內(nèi)核開源且免費(fèi)的特點(diǎn),越來越多的公司和個(gè)人參與到Linux內(nèi)核的開發(fā)當(dāng)中。而且很多開源項(xiàng)目也移植到Linux之上,這樣Linux逐漸豐滿起來。
慢慢的,很多公司在Linux內(nèi)核的基礎(chǔ)上增加了開發(fā)工具和應(yīng)用軟件,將Linux內(nèi)核和這些用戶態(tài)的軟件打包成為一個(gè)操作系統(tǒng)安裝鏡像,這個(gè)系統(tǒng)稱為Linux操作系統(tǒng),或者稱為Linux發(fā)行版。這個(gè)Linux操作系統(tǒng)就好像Windows系統(tǒng)一樣,普通用戶可以使用它進(jìn)行日常工作。
Linux發(fā)行版很多,比如我們見的比較多的有Ubuntu、Redhat和Suse等等,非常之多。對(duì)于傳統(tǒng)概念,操作系統(tǒng)應(yīng)該是一個(gè)具備完整功能的系統(tǒng),它不僅僅包括內(nèi)核,還要包括很多應(yīng)用軟件。因此,后來逐漸將Linux的含義由Linux轉(zhuǎn)換為Linux操作系統(tǒng),而Linux的內(nèi)核則用"Linux內(nèi)核"作為稱呼,以便于進(jìn)行區(qū)分。
Linux操作系統(tǒng)及各種發(fā)行版
前面我們簡要的介紹了Linux操作系統(tǒng)、內(nèi)核和發(fā)行版。對(duì)于Linux操作系統(tǒng)來說,其本身是一個(gè)整體,包括Linux內(nèi)核、系統(tǒng)庫和系統(tǒng)程序,Linux內(nèi)核是其最基礎(chǔ)的部分,它實(shí)現(xiàn)了對(duì)硬件資源的管理,并且提供了使用這些硬件資源的通用接口。
自1991年發(fā)布LInux內(nèi)核來,很多公司加入其中,在內(nèi)核的基礎(chǔ)上構(gòu)建了自己的操作系統(tǒng)版本,比如Redhat、Debian和Suse等等。如圖2是從1991年到2007年間Linux發(fā)行版的演化情況(高清圖請(qǐng)私信, linuxtl)??梢钥闯?,到2007年已經(jīng)有不少于20個(gè)發(fā)行版了。
Linux發(fā)行版很多,下面簡單的介紹比較流行的發(fā)行版。
Redhat發(fā)行版
Red HatLinux是由Red Hat公司發(fā)布的一個(gè)Linux發(fā)行版。Red Hat Linux可算是一個(gè)“中年”的Linux發(fā)布包,其1.0版本于1994年11月3日發(fā)布。Red Hat Linux應(yīng)該是業(yè)界應(yīng)用最多的操作系統(tǒng)了,很多其它發(fā)行版都是基于該發(fā)行版,例如CentOS和Oracle Linux等等。
CentOS發(fā)行版
CentOS發(fā)行版是一個(gè)Red Hat LInux的開源版本。它是來自于Red Hat Linux依照開放源代碼規(guī)定釋出的源代碼所編譯而成。由于Red Hat Linux本身是一個(gè)商業(yè)操作系統(tǒng),因此很多企業(yè)在使用是存在諸多不便,這些企業(yè)就轉(zhuǎn)移到CentOS上來。
Red Hat和CentOS等操作系統(tǒng)發(fā)行版主要應(yīng)用在企業(yè)服務(wù)中,更多的應(yīng)用在服務(wù)端業(yè)務(wù)中,比如Web服務(wù)和云計(jì)算等等。
Ubuntu發(fā)行版
Ubuntu最早是一個(gè)基于Dibian的桌面版發(fā)行版。Ubuntu基本上可以代替Windows實(shí)現(xiàn)日常辦公,因?yàn)槠浒l(fā)行版中包含日常辦公常用的所有軟件,比如郵件客戶端,開源Office套件等等我們能想到的工具。而且這些工具都是免費(fèi)的。
下面是Ubuntu桌面版的一個(gè)桌面截圖,可以看出其跟Windows或則MacOS很像,美觀度也是很贊的。
Ubuntu發(fā)展很快,目前除了桌面版外還有服務(wù)版和云計(jì)算版等其它版本,幾乎涵蓋了所有的應(yīng)用領(lǐng)域。
Suse發(fā)行版
Suse是德國 SuSE Linux AG公司發(fā)行維護(hù)的Linux發(fā)行版,是屬于此公司的注冊(cè)商標(biāo)。第一個(gè)版本出現(xiàn)在1994年年初,也是比較早的發(fā)行版之一。2004年這家公司被Novell公司收購。
我們只介紹了比較主流的發(fā)行版。Linux的發(fā)行版還很多,很難全部介紹。最后我們總結(jié)一下幾個(gè)關(guān)鍵發(fā)行版的時(shí)間線以及Linux社區(qū)的比較重要的幾個(gè)大事件,具體如圖所示。當(dāng)然,這里面不僅僅包括Linux操作系統(tǒng)本身,還包括編譯器和Git版本控制工具等等。
Linux操作系統(tǒng)整體架構(gòu)
前面我們介紹了操作系統(tǒng)不僅僅包含內(nèi)核,內(nèi)核只是操作系統(tǒng)的基礎(chǔ),實(shí)現(xiàn)了對(duì)硬件資源的管理。操作系統(tǒng)的組件通常包括如下幾部分:
操作系統(tǒng)內(nèi)核系統(tǒng)庫系統(tǒng)工具集基于上述關(guān)鍵組件,用戶可以使用該操作系統(tǒng),或者基于該操作系統(tǒng)開發(fā)自己的應(yīng)用程序。如圖4為Linux操作系統(tǒng)架構(gòu)簡圖。從這張圖中我們可以看出操作系統(tǒng)與硬件及應(yīng)用軟件間的關(guān)系。下面我們分別介紹一下各部分含義和作用。
Linux內(nèi)核(Kernel)
內(nèi)核時(shí)操作系統(tǒng)最核心,最基礎(chǔ)的部分。它實(shí)現(xiàn)了對(duì)計(jì)算機(jī)硬件的管理,并且對(duì)上層提供接口。這里的接口包括開發(fā)接口和管理接口等等。通常來說有兩者類型的操作系統(tǒng)內(nèi)核,它們是微內(nèi)核和宏內(nèi)核。
微內(nèi)核,正如其名字一樣,它只包含最基礎(chǔ)的功能特性。在微內(nèi)核操作系統(tǒng)中只提供了非常簡單的軟件,包括內(nèi)存管理,進(jìn)程管理和進(jìn)程通信等等特性。
宏內(nèi)核,宏內(nèi)核不僅僅提供內(nèi)存管理、進(jìn)程管理和通信的特性,還包含很多驅(qū)動(dòng)程序。而且,這些驅(qū)動(dòng)程序通常是可以動(dòng)態(tài)的加載和卸載。
系統(tǒng)庫
操作系統(tǒng)不能自嗨,其最重要的是為上層提供抽象的接口,這樣開發(fā)人員才能開發(fā)應(yīng)用程序,從而利用計(jì)算機(jī)資源。其中系統(tǒng)庫就是操作系統(tǒng)提供的抽象接口,也就是開發(fā)接口或者系統(tǒng)API。類似的接口很多,比如訪問文件系統(tǒng)的API,網(wǎng)絡(luò)套接字API或者進(jìn)程管理API等等。
系統(tǒng)程序(工具集)
系統(tǒng)工具集其實(shí)就是操作系統(tǒng)自帶的一些軟件。這些軟件主要實(shí)現(xiàn)對(duì)操作系統(tǒng)的管理和監(jiān)控等功能。比如對(duì)操作系統(tǒng)網(wǎng)絡(luò)狀態(tài)的查看(ifconfig),磁盤格式化和磁盤負(fù)載監(jiān)控等等。類似的工具很多,本文不再贅述。
上面只是簡單的介紹了一下Linux操作系統(tǒng)的幾個(gè)核心組件,其實(shí)Linux的整體架構(gòu)要復(fù)雜的多。單純從Linux內(nèi)核的角度,它要管理CPU、內(nèi)存、網(wǎng)卡、硬盤和輸入輸出等設(shè)備,因此內(nèi)核本身分為進(jìn)程調(diào)度,內(nèi)存管理,虛擬文件系統(tǒng),網(wǎng)絡(luò)接口等4個(gè)核心子系統(tǒng)。