Linux簡(jiǎn)史
引言
在流行的用法中,“Linux”通常是指圍繞Linux內(nèi)核的一組操作系統(tǒng)發(fā)行版。但從嚴(yán)格意義上講,Linux僅指內(nèi)核本身的存在。為了構(gòu)建一個(gè)完整的操作系統(tǒng),Linux發(fā)行版通常包括來(lái)自GNU項(xiàng)目和其它源的工具和庫(kù)。最近,越來(lái)越多的開發(fā)人員使用Linux來(lái)構(gòu)建和運(yùn)行移動(dòng)應(yīng)用程序;它還在開發(fā)價(jià)格合理的設(shè)備(如Chromebook)中發(fā)揮了關(guān)鍵作用,Chromebook在內(nèi)核上運(yùn)行操作系統(tǒng)。在一般的云計(jì)算和服務(wù)器環(huán)境中,出于某些實(shí)際原因,Linux是一種流行的選擇:
它的發(fā)行版仍然是最新的,并得到其他開發(fā)者社區(qū)的支持。
它可以在各種硬件上運(yùn)行,并將與預(yù)先存在的系統(tǒng)一起安裝(在本地開發(fā)環(huán)境中是一個(gè)有用的特性)。
它支持從預(yù)存在的存儲(chǔ)庫(kù)進(jìn)行集中式軟件安裝。
它的資源需求很低。
開發(fā)人員為服務(wù)器構(gòu)建應(yīng)用程序生態(tài)系統(tǒng)和工具時(shí)通常會(huì)被高度重視,從而實(shí)現(xiàn)高級(jí)別的兼容性。
它支持對(duì)操作系統(tǒng)進(jìn)行必要的更改。
Linux也可以追溯到自由和開源軟件運(yùn)動(dòng),因此一些開發(fā)人員會(huì)出于道德和實(shí)際原因選擇它:
對(duì)于一些開發(fā)人員來(lái)說,使用Linux代表了對(duì)可訪問性和表達(dá)自由的承諾。
Linux社區(qū)也對(duì)一些開發(fā)人員具有吸引力:當(dāng)他們有問題時(shí),他們可以查詢?cè)撋鐓^(qū)產(chǎn)生的資源,或直接聯(lián)系到許多活躍的維護(hù)者之一。
為了理解Linux在開發(fā)社區(qū)(及其他人)中的角色,本文將通過Unix概述Linux的簡(jiǎn)史,并討論一些流行的Linux發(fā)行版。
源自Unix
Linux起源于Unix和Multics,這兩個(gè)項(xiàng)目都以開發(fā)強(qiáng)大的多用戶操作系統(tǒng)為目標(biāo)。
Unix之源起
Unix是在貝爾實(shí)驗(yàn)室計(jì)算機(jī)科學(xué)研究中心的Multics項(xiàng)目迭代中開發(fā)的。在貝爾實(shí)驗(yàn)室和其他地方從事Multics工作的開發(fā)人員對(duì)構(gòu)建具有單級(jí)存儲(chǔ)、動(dòng)態(tài)鏈接的多用戶操作系統(tǒng)(其中正在運(yùn)行的進(jìn)程可以請(qǐng)求將另一個(gè)段添加到其地址空間,使其能夠執(zhí)行該段上的代碼)和分層文件系統(tǒng)很感興趣。
貝爾實(shí)驗(yàn)室于1969年停止資助Multics項(xiàng)目,但包括Ken Thompson和Dennis Ritchie在內(nèi)的一組研究人員繼續(xù)致力于該項(xiàng)目的核心規(guī)則。在1972年3月,他們決定用C語(yǔ)言重寫該系統(tǒng),這使得Unix具有獨(dú)一無(wú)二的可移植性:與其他現(xiàn)代操作系統(tǒng)不同,它可以獨(dú)立于硬件進(jìn)行遷移。
貝爾實(shí)驗(yàn)室(后來(lái)的AT&T)的研究和開發(fā)繼續(xù)進(jìn)行,同時(shí),Unix系統(tǒng)實(shí)驗(yàn)室與Sun Microsystems合作開發(fā)Unix版本,則將被商業(yè)化Unix供應(yīng)商廣泛采用。與此同時(shí),學(xué)術(shù)界繼續(xù)進(jìn)行研究,最知名的是加州大學(xué)伯克利分校的計(jì)算機(jī)系統(tǒng)研究小組。 該小組發(fā)布了Berkeley Software Distribution(BSD),它激發(fā)了一系列操作系統(tǒng),其中許多操作系統(tǒng)至今仍在使用。有歷史記錄的兩個(gè)BSD發(fā)布是NeXTStep:NeXT開創(chuàng)的操作系統(tǒng),它成為macOS及其他產(chǎn)品的基礎(chǔ);MINIX:是一個(gè)教育版操作系統(tǒng),它在Linus Torvalds開發(fā)Linux時(shí)形成了相當(dāng)?shù)幕A(chǔ)。
Unix的主要特性
Unix以清晰、可移植性和同時(shí)性原則為導(dǎo)向。
清晰性:Unix的模塊化設(shè)計(jì)允許函數(shù)以有限且定義好的方式運(yùn)行。它的文件系統(tǒng)是統(tǒng)一的,層次化的,簡(jiǎn)化了數(shù)據(jù)的操作。與以前的一些系統(tǒng)調(diào)用不同,Unix實(shí)現(xiàn)了數(shù)百次(而不是數(shù)千次)的系統(tǒng)調(diào)用,每一次調(diào)用的目的都是簡(jiǎn)單明了的。
可移植性:通過用C語(yǔ)言編寫Unix,貝爾實(shí)驗(yàn)室的團(tuán)隊(duì)將Unix定位為廣泛使用和采用。C被設(shè)計(jì)為具有對(duì)內(nèi)存的低級(jí)訪問,最小的運(yùn)行時(shí)支持,以及語(yǔ)言和機(jī)器指令之間的有效關(guān)系。以C語(yǔ)言為基礎(chǔ)意味著Unix是可適應(yīng)的,并且易于在各種硬件上運(yùn)行。
同時(shí)性:Unix內(nèi)核是為支持多個(gè)用戶和工作流的目標(biāo)(由Multics項(xiàng)目共享)而定制的。內(nèi)核空間與Unix中的用戶空間不同,后者允許多個(gè)應(yīng)用程序同時(shí)運(yùn)行。
Linux的演變
Unix給開發(fā)人員提出了重要的問題,但它在最早期的迭代版本中也保持了私有性。因此,其歷史的下半場(chǎng)是關(guān)于開發(fā)人員如何在其中工作以及針對(duì)它創(chuàng)建免費(fèi)并且開源替代品的故事。
開源實(shí)驗(yàn)
Richard Stallman是開發(fā)者中的核心人物,他們受到啟發(fā)、創(chuàng)造了Unix的非私有替代版。在麻省理工學(xué)院人工智能實(shí)驗(yàn)室工作期間,他開始研究GNU項(xiàng)目(遞歸的說法“GNU's not Unix!”),最終于1984年離開實(shí)驗(yàn)室,因此他可以將GNU組件作為自由軟件進(jìn)行分發(fā)。GNU內(nèi)核,稱為GNU HURD,成為自由軟件基金會(huì)(FSF)的焦點(diǎn),該基金成立于1985年,目前由Stallman領(lǐng)導(dǎo)。
與此同時(shí),另一位開發(fā)人員正在開發(fā)一種免費(fèi)的Unix替代品:芬蘭本科生Linus Torvalds。1991年8月25日,在對(duì)MINIX的許可感到失望之后,Torvalds向MINIX用戶群宣布,他正在開發(fā)自己的操作系統(tǒng),類似于MINIX。雖然最初是使用GNU C編譯器在MINIX上開發(fā)的,但是Linux內(nèi)核很快成為一個(gè)獨(dú)特的項(xiàng)目,其核心是開發(fā)人員,他們?cè)?994年與Torvalds一起發(fā)布了1.0版本的內(nèi)核。
Torvalds的內(nèi)核一直使用GNU代碼,包括GNU C編譯器,許多Linux發(fā)行版都使用GNU組件。Stallman一直在游說將“Linux”一詞擴(kuò)展到“GNU/Linux”,他認(rèn)為這個(gè)詞既包含了GNU項(xiàng)目在Linux開發(fā)中的角色,也包含了孕育GNU項(xiàng)目和Linux內(nèi)核的基本理念。今天,“Linux”經(jīng)常被用來(lái)表示Linux內(nèi)核和GNU元素的存在。與此同時(shí),許多手持設(shè)備和智能手機(jī)上的嵌入式系統(tǒng)通常使用Linux內(nèi)核,很少甚至沒有GNU組件。
Linux 的核心特性
盡管 Linux 內(nèi)核從 Unix 那里繼承了很多目標(biāo)和屬性,但是從以下幾個(gè)方面考量的話,和早期系統(tǒng)還是有許多不同的地方:
Linux 的核心組件是內(nèi)核,它和其他的操作系統(tǒng)組件完全獨(dú)立。這就意味著 Linux 可以通過其他來(lái)源(諸如 GNU)借用所需要任何的組件來(lái)組成一個(gè)完整的操作系統(tǒng)。
Linux 是免費(fèi)的、開源的。由開發(fā)人員社區(qū)共同維護(hù)的內(nèi)核通過 GNU 的通用公共許可證(這是自由軟件基金會(huì)基于 GNU 項(xiàng)目的一個(gè)分支)進(jìn)行授權(quán),并且可以自由下載和修改。GPL 規(guī)定基于原始軟件的衍生產(chǎn)物必須遵循和保留原始軟件的許可條款內(nèi)容。
Linux 有一個(gè)類似于 Unix 的單片內(nèi)核,但是 Linux 也可以根據(jù)需要?jiǎng)討B(tài)地加載和卸載內(nèi)核代碼。
和傳統(tǒng)的 Unix 實(shí)現(xiàn)不同的是,Linux 支持對(duì)稱多處理架構(gòu)(SMP)。這意味著單個(gè)操作系統(tǒng)可以訪問多個(gè)共享主存的處理器以及所有的輸入輸出設(shè)備。
Linux 的內(nèi)核是搶占式的,這是 Linux 和 Unix 之間的另一個(gè)差異。這意味著調(diào)度器可以在驅(qū)動(dòng)程序或內(nèi)核的其他部分在運(yùn)行時(shí)強(qiáng)制進(jìn)行切換。
Linux 沒有線程和普通進(jìn)程的區(qū)分。
Linux 支持命令行界面(CLI),除此之外,也可以支持圖形用戶界面(GUI)。
流行的Linux發(fā)布版
開發(fā)者目前維護(hù)了諸多流行的Linux發(fā)行版。其中存在時(shí)間最長(zhǎng)的是Debian,它是一個(gè)免費(fèi)的開源發(fā)行版,擁有50,000個(gè)軟件包。Debian啟發(fā)了另一個(gè)流行的發(fā)行版Ubuntu,由Canonical Ltd所資助。Ubuntu使用Debian的deb包格式和包管理工具,并且Ubuntu開發(fā)者將改動(dòng)推回到上游的Debian。
Red Hat,F(xiàn)edora和CentOS之間存在著類似的關(guān)系。Red Hat在1993年創(chuàng)建了Linux發(fā)行版,十年后將其分割為Red Hat Enterprise Linux和Fedora,后者是一個(gè)基于社區(qū)的操作系統(tǒng),它使用了Linux內(nèi)核和來(lái)自GNU Project中的元素。Red Hat還與CentOS Project建立了合作關(guān)系,這是另一個(gè)流行的用于Web服務(wù)器的Linux發(fā)行版。然而這種關(guān)系不包括付費(fèi)維護(hù)。與Debian一樣,CentOS由開發(fā)者社區(qū)維護(hù)的。
結(jié)論
在本文中,我們討論了Linux根源于Unix中的特性以及它自身的一些定義特性。如果您有興趣了解更多關(guān)于Linux和Unix變體(包括FreeBSD)的歷史,那么我們的FreeBSD系列可能會(huì)是很好的開始。另一個(gè)選項(xiàng)可以考慮下我們的Linux使用導(dǎo)學(xué)系列。您還可以查看Linux文件系統(tǒng)布局的介紹、關(guān)于如何使用find和locate命令在Linux VPS中搜索文件的討論,或者關(guān)于命令行中正則表達(dá)式的介紹?!緛?lái)源:絡(luò)茄網(wǎng)】