官术网_书友最值得收藏!

1.1 Linux操作系統(tǒng)的誕生

操作系統(tǒng)是一種特殊的軟件(或程序),它是用戶和計(jì)算機(jī)的接口,也是人機(jī)溝通的橋梁。用戶通過操作系統(tǒng)提供的交互界面來使用計(jì)算機(jī)。操作系統(tǒng)位于應(yīng)用程序和計(jì)算機(jī)硬件的中間:一方面,操作系統(tǒng)控制著應(yīng)用程序的運(yùn)行;另一方面,操作系統(tǒng)又管理著計(jì)算機(jī)的硬件資源。在這個(gè)過程中,操作系統(tǒng)把硬件抽象成一種資源,并以系統(tǒng)接口的形式提供給應(yīng)用程序。此外,操作系統(tǒng)一般也會(huì)自帶各類實(shí)用工具,方便用戶進(jìn)行各類操作,如程序開發(fā)、程序運(yùn)行、系統(tǒng)訪問、文件管理、數(shù)據(jù)處理、網(wǎng)絡(luò)通信等。總而言之,操作系統(tǒng)能讓計(jì)算機(jī)更易于使用,同時(shí)也能更有效地管理計(jì)算機(jī)資源。

自20世紀(jì)50年代中期批處理操作系統(tǒng)(常被認(rèn)為是第一代操作系統(tǒng))誕生以來,操作系統(tǒng)已經(jīng)發(fā)展了將近70年。批處理系統(tǒng)可以讓計(jì)算機(jī)處理器按順序批量執(zhí)行用戶的任務(wù),提高了計(jì)算機(jī)的利用率。在執(zhí)行單個(gè)任務(wù)的過程中,處理器時(shí)常需要等待外圍設(shè)備反饋的結(jié)果,于是多道批處理操作系統(tǒng)應(yīng)運(yùn)而生。該系統(tǒng)可以在處理器等待外圍設(shè)備反饋的時(shí)間間隔里,切換執(zhí)行另一個(gè)任務(wù),這樣可以有效提升批處理的效率。

當(dāng)時(shí)計(jì)算機(jī)龐大且昂貴,普通用戶根本無力購(gòu)買自己的計(jì)算機(jī),因此很多用戶只能共享一臺(tái)由專門的操作員負(fù)責(zé)操作的計(jì)算機(jī)。普通用戶把需要處理的任務(wù)交給操作員,等待一段時(shí)間后才能取回運(yùn)行結(jié)果。盡管多道批處理操作系統(tǒng)已經(jīng)大大縮短了用戶等待的時(shí)間,但是用戶還是需要排隊(duì)來依次使用計(jì)算機(jī)。如果能讓用戶直接訪問計(jì)算機(jī),用戶和操作系統(tǒng)的交互無疑就會(huì)更加高效。

分時(shí)操作系統(tǒng)的出現(xiàn)解決了這個(gè)問題。分時(shí)操作系統(tǒng)允許多個(gè)用戶通過終端訪問系統(tǒng),并輪流分配給每個(gè)用戶一小段時(shí)間來使用計(jì)算機(jī)。由于輪流的速度很快,感覺就像是多個(gè)用戶在同時(shí)使用一臺(tái)計(jì)算機(jī)。當(dāng)時(shí)較為著名的分時(shí)操作系統(tǒng)是由麻省理工學(xué)院開發(fā)的兼容分時(shí)系統(tǒng)(Compatible Time-Sharing System,CTSS)。該系統(tǒng)簡(jiǎn)單而高效,讓每位用戶在使用時(shí)都感覺是獨(dú)占了整臺(tái)計(jì)算機(jī)。盡管CTSS很成功,但是其功能相對(duì)簡(jiǎn)單,于是麻省理工學(xué)院開發(fā)出了一個(gè)更好的操作系統(tǒng)—— Multics。Multics被認(rèn)為是現(xiàn)代計(jì)算機(jī)操作系統(tǒng)的始祖,計(jì)算機(jī)操作系統(tǒng)的發(fā)展可以分為以下3個(gè)階段。

(1)UNIX操作系統(tǒng)的誕生與發(fā)展。UNIX操作系統(tǒng)吸收了CTSS和Multics的許多先進(jìn)思想。UNIX操作系統(tǒng)早期在貝爾實(shí)驗(yàn)室流行,后來又被提供給大學(xué)和一些公司使用。不同的機(jī)構(gòu)各自都對(duì)UNIX操作系統(tǒng)開發(fā)了新功能,因此UNIX操作系統(tǒng)出現(xiàn)了很多衍生版本。不論是操作系統(tǒng)研究領(lǐng)域還是商業(yè)應(yīng)用領(lǐng)域,UNIX操作系統(tǒng)都有著顯著的影響力。

(2)計(jì)算機(jī)操作系統(tǒng)邁入圖形化時(shí)代。隨著個(gè)人計(jì)算機(jī)的誕生,可視化操作系統(tǒng)也應(yīng)運(yùn)而生,其中macOS操作系統(tǒng)和Windows操作系統(tǒng)最為著名。它們對(duì)用戶更為友好,同時(shí)也對(duì)現(xiàn)代社會(huì)文明的發(fā)展產(chǎn)生了深遠(yuǎn)的影響。

(3)Linux操作系統(tǒng)的誕生與演進(jìn)。與商業(yè)化的macOS操作系統(tǒng)、Windows操作系統(tǒng)相反,Linux操作系統(tǒng)因其開放源代碼的特性而異軍突起,并在全世界軟件人員的合力開發(fā)中取得了長(zhǎng)足發(fā)展,在科學(xué)研究、工程應(yīng)用、嵌入式開發(fā)等領(lǐng)域都得到了廣泛的應(yīng)用。

1.1.1 從UNIX操作系統(tǒng)到Linux操作系統(tǒng)

真正意義上的操作系統(tǒng)出現(xiàn)在20世紀(jì)60年代初期,主要是指計(jì)算機(jī)制造公司為自家生產(chǎn)的大型計(jì)算機(jī)/小型計(jì)算機(jī)而編寫的分時(shí)操作系統(tǒng)。此外,麻省理工學(xué)院的“黑客”(這里主要指計(jì)算機(jī)愛好者和程序愛好者)們?yōu)楫?dāng)時(shí)的計(jì)算機(jī)主機(jī)開發(fā)了兼容分時(shí)系統(tǒng)(CTSS),讓約30位用戶可以聯(lián)機(jī)使用。在1965年前后,麻省理工學(xué)院開始設(shè)計(jì)Multics。由于設(shè)計(jì)該操作系統(tǒng)是個(gè)大項(xiàng)目,因此麻省理工學(xué)院聯(lián)合美國(guó)通用電氣公司和貝爾實(shí)驗(yàn)室一起進(jìn)行開發(fā)工作。Multics和CTSS有著類似的觀念,即讓人們可以更方便地通過操作系統(tǒng)去做一些真正有價(jià)值的工作。不過到了1969年,由于Multics的設(shè)計(jì)目標(biāo)過于復(fù)雜、開發(fā)進(jìn)度遲緩,貝爾實(shí)驗(yàn)室退出了該開發(fā)項(xiàng)目。

肯·湯普森(Ken Thompson)是貝爾實(shí)驗(yàn)室的工程師,他參與了Multics的開發(fā)項(xiàng)目,還為Multics寫了一個(gè)名為“太空旅行”(Space Travel)的游戲,該游戲樂趣十足,得到了不少同事的贊揚(yáng)。但沒有了Multics,該游戲也就無法再運(yùn)行了。于是,在他們退出Multics開發(fā)項(xiàng)目之后不久,由于肯·湯普森的工作需求以及他想要繼續(xù)體驗(yàn)該游戲的愿望,肯·湯普森在同事丹尼斯· 里奇(Dennis Ritchie)的協(xié)助下,在一臺(tái)小型計(jì)算機(jī)PDP-7(如圖1-1所示,當(dāng)時(shí)PDP-7是性價(jià)比很高的計(jì)算機(jī),售價(jià)72,000美元)上用匯編語言開發(fā)了一個(gè)極其簡(jiǎn)單的操作系統(tǒng)。當(dāng)時(shí)還沒有給該操作系統(tǒng)取名,于是他們的同事布賴恩·柯林漢(Brian Kernighan)提議道:“Multics有包羅萬象的功能,而新系統(tǒng)頂多擇一而從,應(yīng)該用Uni來替代Multi,就叫這個(gè)新系統(tǒng)為UNICS。”(multics有復(fù)雜、多數(shù)的意思,unics有單一的意思,UNICS就是相對(duì)于Multics的一種戲稱,后來被改名為UNIX)。

圖1-1 小型計(jì)算機(jī)PDP-7,運(yùn)行第一版UNIX操作系統(tǒng)的機(jī)器

1973年,肯·湯普森和丹尼斯·里奇把UNIX操作系統(tǒng)移植到了實(shí)驗(yàn)室新買的PDP-11上。由于移植操作系統(tǒng)需要對(duì)用匯編語言編寫的操作系統(tǒng)進(jìn)行完全重寫,因此他們打算用更高級(jí)的語言來重新開發(fā)UNIX操作系統(tǒng),方便以后的移植工作。此前,肯·湯普森已經(jīng)開發(fā)出了B語言。B語言是他專門為PDP-7而設(shè)計(jì)的編程語言,由于其語法接近BCPL而得名。但是B語言并不適合PDP-11,因此丹尼斯·里奇對(duì)B語言進(jìn)行了擴(kuò)充,并將新的語言命名為“New B”(簡(jiǎn)稱NB)語言,最后它逐漸演變成了C語言。在丹尼斯·里奇給C語言添加了結(jié)構(gòu)體(struct)類型之后,他們用C語言和少量匯編語言成功重寫了UNIX系統(tǒng)。在此之前從來沒有人用高級(jí)語言編寫過操作系統(tǒng),這成為了操作系統(tǒng)歷史上的一個(gè)里程碑。至此,UNIX操作系統(tǒng)成長(zhǎng)為一個(gè)可移植的操作系統(tǒng),這令其傳播更為方便。UNIX操作系統(tǒng)和C語言的組合很快被應(yīng)用于極為廣泛的計(jì)算作業(yè),其中的很多應(yīng)用完全超出了設(shè)計(jì)者的預(yù)期。當(dāng)時(shí)的UNIX操作系統(tǒng)屬于AT&T公司的貝爾實(shí)驗(yàn)室,貝爾實(shí)驗(yàn)室一開始并未重視UNIX操作系統(tǒng),因?yàn)閁NIX操作系統(tǒng)本來就不是正式項(xiàng)目,也就沒想著用它來營(yíng)利。此后,UNIX操作系統(tǒng)和其源代碼被免費(fèi)提供給各大高校使用。不僅如此,貝爾實(shí)驗(yàn)室還和學(xué)術(shù)界(主要是加利福尼亞大學(xué)伯克利分校)合作開發(fā)UNIX操作系統(tǒng),使得UNIX操作系統(tǒng)在各大高校快速傳播開來。

對(duì)UNIX操作系統(tǒng)而言,1977年是具有特殊意義的一年。在這一年,學(xué)術(shù)界的頂尖院校—— 加利福尼亞大學(xué)伯克利分校,以UNIX第6版為基礎(chǔ),在系統(tǒng)中添加了許多先進(jìn)的特性,并以“Berkeley Software Distribution”為名對(duì)外發(fā)行,也就是1BSD,1BSD的發(fā)行也正式開創(chuàng)了BSD系列。BSD系列是UNIX操作系統(tǒng)中一個(gè)很重要的分支(蘋果公司的macOS操作系統(tǒng)實(shí)際上就源自此分支)。1979年,在UNIX第7版發(fā)布后不久,AT&T公司意識(shí)到UNIX操作系統(tǒng)的商業(yè)價(jià)值,收回了UNIX操作系統(tǒng)的版權(quán),企圖將UNIX操作系統(tǒng)變?yōu)樯虡I(yè)化的產(chǎn)品。自此,UNIX操作系統(tǒng)分為兩大陣營(yíng),即以AT&T公司為代表的System V(基于UNIX第7版開發(fā)的商業(yè)UNIX版本)和以加利福尼亞大學(xué)伯克利分校為代表的BSD,各自蓬勃發(fā)展。

BSD操作系統(tǒng)

BSD的全稱是Berkeley Software Distribution(也被稱為BSD UNIX),是由加利福尼亞大學(xué)伯克利分校計(jì)算機(jī)系統(tǒng)研究小組(CSRG)開發(fā)的基于UNIX的操作系統(tǒng),其中包含了有關(guān)UNIX操作系統(tǒng)的諸多研究成果。早期的大部分BSD代碼是以UNIX第6版代碼為基礎(chǔ)的。在比爾·喬利茲(Bill Jolitz)和琳恩·喬利茲(Lynne Jolitz)等幾位BSD開發(fā)小組關(guān)鍵成員的努力下,他們根據(jù)開源軟件許可協(xié)議開發(fā)出了386BSD。后來,很多評(píng)論家在比較了386BSD和林納斯·托瓦茲(Linux操作系統(tǒng)之父)的早期成果之后,都認(rèn)為386BSD將會(huì)成為個(gè)人計(jì)算機(jī)史上最重要的類UNIX操作系統(tǒng)。不過就目前而言,Linux操作系統(tǒng)顯然比386BSD(及其衍生版本)要更受歡迎。

1993年,比爾·喬利茲這一重要成員退出了386BSD項(xiàng)目,使得該操作系統(tǒng)面臨被終止的危險(xiǎn)。好在幾位項(xiàng)目組的開發(fā)人員在商量后,決定繼續(xù)開發(fā)該項(xiàng)目,但是對(duì)于如何確定開發(fā)方向,卻存在兩種不同的聲音。于是,386BSD項(xiàng)目就衍生出了兩個(gè)分支:NetBSD和FreeBSD。NetBSD的目的是設(shè)計(jì)一個(gè)多平臺(tái)系統(tǒng),讓它可以在幾乎任何計(jì)算機(jī)架構(gòu)上運(yùn)行;FreeBSD則著重于開發(fā)一款高性能和高可靠性的操作系統(tǒng),不僅可以使服務(wù)器穩(wěn)定且高效地工作,還可以讓個(gè)人計(jì)算機(jī)成為一臺(tái)高性能的工作站。此外,OpenBSD也比較流行。OpenBSD是在1996年被推出的,它的設(shè)計(jì)理念是創(chuàng)造一個(gè)注重安全性的操作系統(tǒng)。與此同時(shí),OpenBSD極度重視源代碼的質(zhì)量,內(nèi)核源代碼的任何修改都需要經(jīng)過審閱。

除了以上3個(gè)主流的BSD操作系統(tǒng),還有兩個(gè)基于FreeBSD的衍生操作系統(tǒng)。一個(gè)是DragonFly BSD,它的設(shè)計(jì)目標(biāo)是提供一個(gè)比FreeBSD更優(yōu)秀、支持對(duì)稱多處理器的操作系統(tǒng),并使內(nèi)核能直接支持通用集群系統(tǒng),以取得更好的計(jì)算效果。另一個(gè)是大家熟知的macOS操作系統(tǒng),該系統(tǒng)的核心被稱為Darwin,它內(nèi)部的部分組件源自BSD(主要是FreeBSD),如文件系統(tǒng)、網(wǎng)絡(luò)組件和POSIX接口等。由于macOS操作系統(tǒng)引用了FreeBSD的源代碼,因此從技術(shù)上來說,一部分macOS操作系統(tǒng)衍生于FreeBSD。當(dāng)然,現(xiàn)在的macOS操作系統(tǒng)已經(jīng)超出了FreeBSD的代碼框架,完全進(jìn)行了個(gè)性化設(shè)計(jì)。macOS操作系統(tǒng)不僅具備和FreeBSD一樣的高性能和高可靠性,而且提供了簡(jiǎn)潔易用的圖形用戶界面,得到了很多用戶的青睞。

到了19世紀(jì)80年代中后期,UNIX操作系統(tǒng)逐漸形成了兩大流派:一支是商業(yè)派,另一支是非商業(yè)派。商業(yè)派是以AT&T公司為代表的System V,不公開源代碼的商業(yè)派視源代碼為商業(yè)機(jī)密,甚至不允許大學(xué)使用UNIX操作系統(tǒng)源代碼。非商業(yè)派則是以加利福尼亞大學(xué)伯克利分校為代表的BSD,本著學(xué)術(shù)交流的目的,擁護(hù)軟件開源,鼓勵(lì)代碼共享,促使UNIX操作系統(tǒng)廣泛傳播。當(dāng)然,在BSD上開發(fā)商業(yè)版也是被允許的,比如蘋果公司的macOS操作系統(tǒng)就是基于BSD被開發(fā)的,但是macOS操作系統(tǒng)是閉源的。

伴隨著UNIX操作系統(tǒng)的商業(yè)化,AT&T公司規(guī)定大學(xué)不允許把UNIX第7版及以后版本的源代碼開放給學(xué)生學(xué)習(xí)和使用。對(duì)于AT&T公司的這種規(guī)定,不僅是學(xué)生,甚至連很多開發(fā)人員都感到失望和遺憾,因?yàn)樗麄兌颊J(rèn)為過度的商業(yè)化并不利于UNIX操作系統(tǒng)的發(fā)展,更不利于操作系統(tǒng)領(lǐng)域的發(fā)展。這也間接導(dǎo)致了非商業(yè)派和商業(yè)派圍繞UNIX操作系統(tǒng)進(jìn)行的版權(quán)斗爭(zhēng)。

當(dāng)時(shí),對(duì)廣大個(gè)人用戶而言,版權(quán)戰(zhàn)爭(zhēng)的最終結(jié)果其實(shí)并不重要,重要的是學(xué)生在學(xué)校上課時(shí)不再能夠使用UNIX操作系統(tǒng),因此對(duì)操作系統(tǒng)的教學(xué)只能停留在原理層面,實(shí)際操作很難展開,這無疑讓想要學(xué)習(xí)操作系統(tǒng)的學(xué)生感到十分沮喪。1987年,為了能讓學(xué)生學(xué)習(xí)并開發(fā)操作系統(tǒng),阿姆斯特丹自由大學(xué)的安德魯·S. 塔能鮑姆(Andrew S. Tanenbaum)教授編寫了主要用于教學(xué)的Minix操作系統(tǒng)。為了避免版權(quán)糾紛,安德魯教授沒有使用UNIX操作系統(tǒng)的核心源代碼,所以Minix操作系統(tǒng)是一個(gè)類UNIX操作系統(tǒng)。由于該操作系統(tǒng)主要用于教學(xué),因此這個(gè)系統(tǒng)很簡(jiǎn)單,卻并不實(shí)用。

Minix操作系統(tǒng)

Minix操作系統(tǒng)的第1個(gè)版本發(fā)布于1987年,安德魯教授創(chuàng)建Minix操作系統(tǒng)的目的是讓學(xué)生學(xué)習(xí)UNIX操作系統(tǒng)。為了保證兼容性,Minix操作系統(tǒng)使用和UNIX操作系統(tǒng)一樣的系統(tǒng)調(diào)用,但沒有使用UNIX操作系統(tǒng)的任何源代碼。出于學(xué)術(shù)的嚴(yán)謹(jǐn)性,安德魯教授采用微內(nèi)核來編寫Minix操作系統(tǒng),這使得Minix操作系統(tǒng)的設(shè)計(jì)思想非常先進(jìn),并且安德魯教授開放了Minix操作系統(tǒng)的完整源代碼,因此Minix操作系統(tǒng)從一開始發(fā)布就吸引了很多用戶。

UNIX第6版發(fā)布于1975年,一經(jīng)發(fā)布,該版本就在高校內(nèi)部迅速傳播開來。1977年,來自新南威爾士大學(xué)的約翰·萊昂斯(John Lions)教授逐行為UNIX第6版的源代碼寫了評(píng)注。全世界有數(shù)百所大學(xué)開始把約翰·萊昂斯教授的評(píng)注作為學(xué)習(xí)UNIX第6版的參考教程。后來在UNIX第7版推出后,AT&T公司的政策被改變了,禁止再將操作系統(tǒng)的源代碼公開給學(xué)生,因此操作系統(tǒng)的教學(xué)也退回到了理論教學(xué)模式。出于對(duì)這種狀況的失望,安德魯教授才決定自己開發(fā)一個(gè)和UNIX操作系統(tǒng)類似的操作系統(tǒng)。1984年,安德魯教授對(duì)將要?jiǎng)?chuàng)建的操作系統(tǒng)進(jìn)行了詳細(xì)的理論設(shè)計(jì)。在完成理論設(shè)計(jì)后,他就開始正式編寫Minix操作系統(tǒng)。因?yàn)樵摬僮飨到y(tǒng)的編寫主要是出于教學(xué)目的,所以其基本內(nèi)核非常簡(jiǎn)單,但是這并不意味著編寫Minix操作系統(tǒng)是一件容易的事。經(jīng)過兩年的辛苦努力,前后花費(fèi)數(shù)千個(gè)小時(shí),安德魯教授終于在1986年基本完成了Minix操作系統(tǒng)的編寫。1987年,Minix操作系統(tǒng)隨安德魯教授的著作Operating Systems: Design and Implementation(《操作系統(tǒng):設(shè)計(jì)與實(shí)現(xiàn)》)被一同發(fā)布了出來。

Minix操作系統(tǒng)一經(jīng)發(fā)布,就取得了成功,不僅因?yàn)樵摬僮飨到y(tǒng)提供源代碼,還因?yàn)橛幸槐驹敿?xì)介紹該操作系統(tǒng)工作原理的圖書,用戶在使用操作系統(tǒng)的同時(shí),還能學(xué)習(xí)操作系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)方法,這在當(dāng)時(shí)是一個(gè)創(chuàng)舉。Minix操作系統(tǒng)在學(xué)生、計(jì)算機(jī)愛好者和開發(fā)人員群體中都受到了極大的歡迎。后來,安德魯教授和他的團(tuán)隊(duì)改進(jìn)了Minix操作系統(tǒng)的網(wǎng)絡(luò)通信等功能,使該操作系統(tǒng)能支持更多的處理器和計(jì)算機(jī)平臺(tái),兼容POSIX接口標(biāo)準(zhǔn)。他們于1997年發(fā)布了Minix 2,同時(shí)把《操作系統(tǒng):設(shè)計(jì)與實(shí)現(xiàn)》也更新到了第2版。2006年,他們又把Minix操作系統(tǒng)和《操作系統(tǒng):設(shè)計(jì)與實(shí)現(xiàn)》更新到了第3版(目前的最新版本),從第3版開始,Minix操作系統(tǒng)的重心轉(zhuǎn)移到了科學(xué)研究,更關(guān)注嵌入式領(lǐng)域,不過它依然適合用來教學(xué)。

1980年之前,基本上只有大學(xué)、科研機(jī)構(gòu)和大型企業(yè)才會(huì)擁有計(jì)算機(jī),因此當(dāng)時(shí)使用計(jì)算機(jī)的用戶幾乎都是“專家級(jí)”,他們一般都有高超的編程技巧,也都屬于專業(yè)用戶。此時(shí)的操作系統(tǒng)都是基于命令行用戶界面進(jìn)行開發(fā)的。隨著集成電路的發(fā)展,大規(guī)模和超大規(guī)模集成電路逐漸普及,計(jì)算機(jī)在縮小體積的同時(shí),其性能也越來越強(qiáng)。

1981年,IBM公司開發(fā)的個(gè)人計(jì)算機(jī)(personal computer,PC)誕生了,它面向個(gè)人用戶,在個(gè)人計(jì)算機(jī)市場(chǎng)進(jìn)行拓展,想要吸引到更多的普通用戶。然而,普通用戶并沒有非常高超的計(jì)算機(jī)操作技巧,這就對(duì)操作系統(tǒng)的易用性提出了較高的要求。于是,基于圖形界面的操作系統(tǒng)應(yīng)運(yùn)而生。

1983年,VisiCorp公司為IBM公司的PC設(shè)計(jì)了一款具有圖形用戶界面(graphical user interface,GUI)的VisiOn操作系統(tǒng)(VisiOn是可移植的操作系統(tǒng),但是從未被移植過),其界面如圖1-2所示。VisiOn操作系統(tǒng)簡(jiǎn)潔直觀,易于操作,對(duì)普通用戶非常友好。

1984年,蘋果公司推出Macintosh操作系統(tǒng)(后來演變?yōu)閙acOS操作系統(tǒng)),System 1.0的界面如圖1-3所示,它具備圖形化操作界面的設(shè)計(jì)能力,用戶可以使用鼠標(biāo)進(jìn)行操作,為操作系統(tǒng)產(chǎn)業(yè)界帶來革命性的變化。

圖1-2 VisiOn操作系統(tǒng)的界面

圖1-3 System 1.0的界面

1985年,微軟公司發(fā)布了Windows操作系統(tǒng)的首個(gè)公開發(fā)行版本(同樣是為IBM公司的PC而設(shè)計(jì)的)。圖1-4展示了Windows 1.01的啟動(dòng)界面和運(yùn)行界面,它具有彩色顯示功能,絕大多數(shù)操作都可以用鼠標(biāo)來控制,不僅如此,該操作系統(tǒng)還提供了常用的應(yīng)用程序,如計(jì)算器、記事本、時(shí)鐘等小工具。

圖1-4 Windows 1.01的啟動(dòng)界面和運(yùn)行界面

在這些操作系統(tǒng)中,蘋果公司的macOS操作系統(tǒng)實(shí)際上就是(部分)來源于UNIX操作系統(tǒng)的FreeBSD版本,是UNIX操作系統(tǒng)陣營(yíng)向普通用戶進(jìn)軍的主力。macOS操作系統(tǒng)的圖形化操作界面和應(yīng)用程序,降低了普通用戶使用操作系統(tǒng)和計(jì)算機(jī)的門檻。

Windows操作系統(tǒng)

微軟公司的Windows操作系統(tǒng)曾出現(xiàn)在1983年的BYTE雜志上,并在1983年秋季的計(jì)算機(jī)經(jīng)銷商博覽會(huì)(COMDEX)上得到了大力推廣。Windows操作系統(tǒng)的發(fā)行是對(duì)GUI環(huán)境(如VisiCorp公司的VisiOn操作系統(tǒng)、蘋果公司的macOS操作系統(tǒng))的一種響應(yīng)。Windows 1.0具有協(xié)作式多任務(wù)處理、平鋪窗口、兼容DOS(磁盤操作系統(tǒng))程序等功能,可以在當(dāng)時(shí)的DOS上運(yùn)行。到了1987年,微軟公司發(fā)布了Windows 2.0。Windows 2.0在Windows 1.0的基礎(chǔ)上添加了重疊窗口、菜單快捷鍵、VGA支持,以及受IBM公司的界面設(shè)計(jì)原則影響而更改的用戶界面。在Windows 2.0之后,微軟公司曾考慮過放棄Windows系統(tǒng),并和IBM公司合作開發(fā)OS/2(OS/2是IBM公司為其第二代個(gè)人計(jì)算機(jī)PS/2研制的新一代操作系統(tǒng))。由于很多方面的理念存在不同,因此微軟公司最終放棄了OS/2的開發(fā),與IBM公司的合作宣告失敗。

后來,微軟公司利用與IBM公司合作獲得的系統(tǒng)開發(fā)經(jīng)驗(yàn)和技術(shù),開發(fā)了自己的Windows 3.0。Windows 3.0是第一個(gè)獲得重點(diǎn)開發(fā)和商業(yè)推廣的系統(tǒng),它將Windows 2.0的8086、80286和80386模式組合到一個(gè)軟件包中,用類似于OS/2的程序管理器和文件管理器代替了MS-DOS Executive(程序管理器)。Microsoft Office的方便易用和成功表現(xiàn)也使得Windows 3.0的市場(chǎng)反應(yīng)更加出色。從這時(shí)開始,用戶逐漸轉(zhuǎn)向Windows平臺(tái),OS/2的市場(chǎng)份額不斷被Windows操作系統(tǒng)蠶食。在此之后,微軟公司相繼推出了Windows 95、Windows 98和Windows Me等操作系統(tǒng),帶來了更強(qiáng)大、更穩(wěn)定、更實(shí)用的桌面圖形用戶界面,Windows操作系統(tǒng)成為有史以來最成功的操作系統(tǒng)之一。

1993年,微軟公司推出了Windows NT,最初面向服務(wù)器市場(chǎng)的第一個(gè)版本是Windows NT 3.1。Windows NT與通信服務(wù)緊密集成,提供文件和打印服務(wù),能運(yùn)行客戶端/服務(wù)器應(yīng)用程序,也內(nèi)置了Internet/Intranet功能。Windows NT的其他改進(jìn)包括新的輔助功能選項(xiàng)、新增語言和區(qū)域設(shè)置、NTFS文件系統(tǒng)和加密文件系統(tǒng)等。Windows NT 4.0和Windows NT 5.0是Windows NT 3.0系列的后續(xù)產(chǎn)品。從Windows NT 5.0開始,微軟公司不再使用“NT”作為操作系統(tǒng)的名稱,而將“NT”作為內(nèi)核名稱隱藏起來(如Windows 2000就是基于Windows NT 5.0開發(fā)的)。目前很多用戶所使用的Windows操作系統(tǒng)基本上都是基于Windows NT架構(gòu)設(shè)計(jì)的,如Windows XP(基于Windows NT 5.1),Windows Vista(基于Windows NT 6.0),Windows 7(基于Windows NT 6.1)和Windows 10(基于Windows NT 6.4,后改為Windows NT 10.0)。

Windows操作系統(tǒng)具有現(xiàn)代化的設(shè)計(jì)風(fēng)格,界面整潔美觀,盡量簡(jiǎn)化了各類操作,確保用戶可以輕松使用計(jì)算機(jī)。同時(shí),Windows系統(tǒng)也具有相當(dāng)高的可靠性和良好的兼容性,能夠在多種硬件平臺(tái)上安全、穩(wěn)定、高效地運(yùn)行。

隨著大量基于可視化操作界面的操作系統(tǒng)問世,個(gè)人計(jì)算機(jī)(PC)迅速發(fā)展,不僅性能越來越強(qiáng)大,而且普及度也越來越高。不過,可視化操作系統(tǒng)由商業(yè)公司開發(fā),大多是直接安裝在計(jì)算機(jī)上的,在降低了用戶使用門檻的同時(shí),也封閉了內(nèi)在的復(fù)雜軟件設(shè)計(jì)。由于這些可視化操作系統(tǒng)都是商業(yè)軟件,因此操作系統(tǒng)的設(shè)計(jì)原理和源代碼無法被學(xué)生和開發(fā)人員學(xué)習(xí)或使用。要想學(xué)習(xí)操作系統(tǒng)的具體實(shí)現(xiàn),Minix操作系統(tǒng)仍然是當(dāng)時(shí)的第一(甚至是唯一)選擇。

1991年,這一情況發(fā)生了改變,在這一年,林納斯·托瓦茲擁有了他人生中第一臺(tái)配有Intel 80386中央處理器的個(gè)人計(jì)算機(jī)。他在新電腦上安裝了Minix操作系統(tǒng)的386版本用于學(xué)習(xí),但是他很快就發(fā)現(xiàn)該操作系統(tǒng)的虛擬終端無法滿足他的要求。因此,托瓦茲決定自己編寫一個(gè)終端仿真程序,順便學(xué)習(xí)一下這臺(tái)計(jì)算機(jī)的硬件工作原理。一段時(shí)間后,終端仿真程序就完成了。托瓦茲馬上又對(duì)它進(jìn)行改進(jìn),加入了磁盤驅(qū)動(dòng)和文件驅(qū)動(dòng)等功能。隨著對(duì)終端仿真程序的不斷改進(jìn),托瓦茲意識(shí)到自己不僅是在編寫應(yīng)用程序,而是在開發(fā)一個(gè)操作系統(tǒng)。

出于對(duì)編程的熱愛,以及對(duì)Minix操作系統(tǒng)在功能新增上過于保守的不滿,托瓦茲萌生了一個(gè)想法—— 開發(fā)一個(gè)比Minix操作系統(tǒng)更好、功能更全面的操作系統(tǒng)。因此,托瓦茲在借鑒和學(xué)習(xí)Minix操作系統(tǒng)的基礎(chǔ)上,從終端仿真程序開始,逐步編寫出了一個(gè)新的操作系統(tǒng)內(nèi)核,最終推出了Linux操作系統(tǒng)。盡管Linux操作系統(tǒng)在一定程度上學(xué)習(xí)和借鑒了Minix操作系統(tǒng),但是兩者在設(shè)計(jì)思想上并不相同。Minix操作系統(tǒng)是微內(nèi)核的設(shè)計(jì),而Linux操作系統(tǒng)則采用與UNIX操作系統(tǒng)一樣的宏內(nèi)核設(shè)計(jì)方式。關(guān)于微內(nèi)核與宏內(nèi)核的區(qū)別,將在本章的1.2.2節(jié)中進(jìn)行闡述。

利用大學(xué)的暑假時(shí)間,托瓦茲正式開始了“開發(fā)一個(gè)比Minix操作系統(tǒng)更好的操作系統(tǒng)”的編程之旅。經(jīng)過幾個(gè)月的全身心投入,1991年9月17日,托瓦茲完成并首次公開了Linux的第一個(gè)版本,版本號(hào)是0.01,編寫該操作系統(tǒng)大部分都采用了C語言,其main函數(shù)如圖1-5所示。

圖1-5 Linux 0.01中的main函數(shù)

Linux 0.01是第一個(gè)可以運(yùn)行的Linux操作系統(tǒng),但是它還存在著很多bug,比如當(dāng)內(nèi)存消耗過大系統(tǒng)就會(huì)死機(jī)等。因此,1991年10月初,托瓦茲獨(dú)自把這個(gè)內(nèi)核開發(fā)到0.02版。除了修復(fù)上一版的bug,這個(gè)版本已經(jīng)可以運(yùn)行GCC、Bash和一些應(yīng)用程序了。1991年11月初,他又發(fā)布了Linux 0.03。后來,由于一個(gè)小小的失誤,托瓦茲的計(jì)算機(jī)中原本安裝的Minix操作系統(tǒng)無法啟動(dòng)了,因此他就把11月底發(fā)布的新版本定為0.10版,并且安裝到了自己的計(jì)算機(jī)上。幾周后他又發(fā)布了Linux 0.11,操作界面如圖1-6所示,該版本的已經(jīng)在某些功能上強(qiáng)于當(dāng)時(shí)Minix操作系統(tǒng)的386版本,而且已經(jīng)被認(rèn)為是一個(gè)類UNIX的內(nèi)核。直到今天,依然還有很多人學(xué)習(xí)并研究Linux 0.11,通過它來了解現(xiàn)代操作系統(tǒng),學(xué)習(xí)操作系統(tǒng)的設(shè)計(jì)思想。

圖1-6 Linux 0.11的操作界面

1992年1月,托瓦茲在發(fā)布Linux 0.12的時(shí)候,除了改進(jìn)代碼,還更改了版權(quán)聲明,自此,Linux操作系統(tǒng)開始使用通用公共許可證(GPL)。原來的許可規(guī)定不允許用戶在把Linux操作系統(tǒng)復(fù)制或拷貝給他人時(shí)收取任何費(fèi)用,改用GPL后則取消了這方面的限制,在更利于系統(tǒng)傳播的同時(shí)也更能保證Linux操作系統(tǒng)自由和開源的屬性。在此之后,Linux操作系統(tǒng)就被很多愛好者所共同開發(fā),成為一款開放的操作系統(tǒng)。1992年3月,繼Linux 0.12之后,托瓦茲直接發(fā)布了Linux 0.95,因?yàn)樗杏X距離正式的Linux 1.0已經(jīng)十分接近了。1992年5月,Linux 0.96發(fā)布,該版本首次包含了對(duì)X Window(UNIX操作系統(tǒng)上的一個(gè)圖形界面,本書第6章將會(huì)詳細(xì)介紹這些內(nèi)容)的支持。1992年10月發(fā)布的Linux 0.98.2支持了部分TCP/IP協(xié)議。至此,Linux操作系統(tǒng)擁有了網(wǎng)絡(luò)連接的功能。Linux 0.99發(fā)布于1992年12月,從版本號(hào)上看,它已經(jīng)和1.0正式版非常接近了。托瓦茲希望Linux 1.0擁有一個(gè)能可靠運(yùn)行的TCP/IP模塊。但是在1993年初,TCP/IP開發(fā)并沒有像預(yù)期的那樣順利,內(nèi)核的更新和發(fā)布變得相對(duì)緩慢。自1993年9月底開始,Linux操作系統(tǒng)的版本不斷更新,平均每幾天就有一個(gè)新版本發(fā)布。

終于,到了1994年3月13日,Linux 1.0正式發(fā)布,該版本為L(zhǎng)inux操作系統(tǒng)加入了完整的網(wǎng)絡(luò)聯(lián)網(wǎng)功能,并且能夠支持基于i386單處理器的計(jì)算機(jī)系統(tǒng)。Linux內(nèi)核的大小也從剛開始的63 KB變成了1 MB。不到1個(gè)月,托瓦茲推出了Linux 1.1,從這時(shí)開始,內(nèi)核開始有穩(wěn)定版和開發(fā)版的區(qū)分。穩(wěn)定版是小數(shù)點(diǎn)后面為偶數(shù)的版本,如 1.0、1.2,穩(wěn)定版會(huì)修補(bǔ)一些明顯的錯(cuò)誤,而沒有添加新的特征。開發(fā)版是小數(shù)點(diǎn)后為奇數(shù)的版本,如1.1、1.3,該版本通常帶有一些新功能。1995年3月,Linux 1.2問世。

在Linux 1.3.x系列之后,托瓦茲直接發(fā)布了Linux 2.0,而不是Linux 1.4。該版本發(fā)布于1996年,相比更早的版本,該版本支持多體系,也支持多處理器,有了一次重大意義上的提升。多體系意味著Linux操作系統(tǒng)可以從英特爾平臺(tái)轉(zhuǎn)向更廣泛的平臺(tái),多處理器則可以讓Linux操作系統(tǒng)的應(yīng)用范圍拓展到微型計(jì)算機(jī)、大型計(jì)算機(jī)甚至超級(jí)計(jì)算機(jī)。Linux 2.0的發(fā)布,意味著Linux操作系統(tǒng)已經(jīng)逐漸走上成熟。從一開始Linux操作系統(tǒng)只能運(yùn)行在個(gè)人計(jì)算機(jī)平臺(tái),到現(xiàn)在發(fā)展成為一個(gè)幾乎完整的類UNIX內(nèi)核。Linux 2.0擁有TCP/IP聯(lián)網(wǎng)技術(shù),支持X Window(圖形環(huán)境)系統(tǒng),也支持多處理器和幾種完全不同的體系結(jié)構(gòu)。

此后,托瓦茲于1999年和2001年分別發(fā)布了Linux 2.2和Linux 2.4。在整個(gè)Linux 2.x系列中,Linux 2.6的時(shí)間跨度非常大,從2.6.10(2003年12月發(fā)布)到2.6.39(2011年5月發(fā)布),涉及30個(gè)大版本。總的來說,從Linux 2.6開始,每個(gè)大版本的開發(fā)時(shí)間跨度大概是2~3個(gè)月,每個(gè)大版本中都有或多或少的功能改變。Linux 2.6.x系列在不斷提高性能和安全性,如具備多處理器配置、64位計(jì)算和高效率線程處理等能力。

2011年7月,為了紀(jì)念Linux操作系統(tǒng)誕生20周年,托瓦茲宣布在Linux 2.6.39發(fā)布之后,內(nèi)核版本號(hào)將提升到3.0。從Linux 3.0開始,版本號(hào)的命名規(guī)則發(fā)生了變化。內(nèi)核版本號(hào)采用“X.Y.Z”的表示方法,其中X表示主版本號(hào),Y表示次版本號(hào),Z則表示修訂號(hào)。次版本號(hào)的奇偶數(shù)不再代表開發(fā)版或穩(wěn)定版,而是隨著版本更新而自然增加。此后內(nèi)核的開發(fā)版會(huì)以“-rc”結(jié)尾,而穩(wěn)定版則只有數(shù)字。

Linux 4.0發(fā)布于2015年4月。2019年3月,托瓦茲在內(nèi)核郵件列表上發(fā)布了Linux 5.0,郵件內(nèi)容如圖1-7所示。

圖1-7 托瓦茲發(fā)布Linux 5.0的郵件內(nèi)容

截至2021年12月,最新的穩(wěn)定版版本號(hào)是Linux 5.15.9,如圖1-8所示。根據(jù)Linux基金會(huì)(Linux Foundation)的《2020年Linux內(nèi)核歷史報(bào)告》,Linux 0.01包含88個(gè)文件和10,239行代碼,Linux 5.8則包含了69,325個(gè)文件和28,443,673行代碼。由此可見,Linux操作系統(tǒng)的發(fā)展是非常迅速的。

圖1-8 kernel.org網(wǎng)站的Linux內(nèi)核下載頁面

其實(shí)在Linux 1.0以后,大部分代碼就不再由托瓦茲本人編寫,他的角色已逐漸從開發(fā)人員變成了技術(shù)領(lǐng)導(dǎo)者。不過,對(duì)于版本號(hào)的發(fā)布以及代碼的整合,托瓦茲都有著最終的決定權(quán)。到目前為止,有數(shù)以萬計(jì)的開發(fā)人員為L(zhǎng)inux操作系統(tǒng)編寫過代碼,他們有的是個(gè)人開發(fā)人員,有的是來自1,700多家不同公司或機(jī)構(gòu)的開發(fā)人員。有關(guān)內(nèi)核的最新信息,讀者可以訪問Linux內(nèi)核官網(wǎng)來獲取。

在剛發(fā)布Linux之前,托瓦茲給他的內(nèi)核起了一個(gè)奇怪的名字,叫作“Freax”,它是自由(Free)和古怪(Freak)的結(jié)合體,由于這個(gè)名字從來沒有被正式啟用過,因此內(nèi)核就被命名為托瓦茲開發(fā)時(shí)使用的名字—— Linux。在Linux 2.0發(fā)布的時(shí)候,還有一個(gè)官方吉祥物—— 一只名為“Tux”的企鵝,從此Linux操作系統(tǒng)擁有了自己的標(biāo)識(shí),如圖1-9所示。

圖1-9 Linux操作系統(tǒng)的標(biāo)識(shí)和官方吉祥物Tux

該標(biāo)識(shí)由平面設(shè)計(jì)師拉里·尤因(Larry Ewing)創(chuàng)作。該標(biāo)識(shí)的由來眾說紛紜,有一種說法是托瓦茲曾被澳大利亞動(dòng)物園里的一只企鵝咬了一口,由托芙(托瓦茲的妻子)提出用企鵝作為L(zhǎng)inux操作系統(tǒng)的標(biāo)識(shí),也有一種說法是該標(biāo)識(shí)是由托瓦茲的女兒提出的。還有一種“民間”的說法是:企鵝來自南極,而南極又是全世界所共有的一塊陸地,這也代表Linux操作系統(tǒng)是所有人的操作系統(tǒng)。然而據(jù)托瓦茲所說,開發(fā)操作系統(tǒng)“只是為了好玩”(來自于托瓦茲的自傳書《只是為了好玩》)。

Linus Torvalds

托瓦茲的全名是林納斯·本納第克特·托瓦茲(Linus Benedict Torvalds),他設(shè)計(jì)并開發(fā)了Linux內(nèi)核,被人們稱為“Linux之父”。1969年12月28日,托瓦茲在芬蘭的赫爾辛基市誕生。在他大約10歲左右,托瓦茲就接觸到了計(jì)算機(jī),這臺(tái)計(jì)算機(jī)是他的外公為了工作需要而購(gòu)買的。隨著使用的深入,他開始學(xué)習(xí)BASIC和匯編語言。1988年,托瓦茲進(jìn)入赫爾辛基大學(xué)學(xué)習(xí)計(jì)算機(jī)科學(xué)。1990年,托瓦茲第一次接觸到UNIX操作系統(tǒng),并且學(xué)習(xí)了關(guān)于UNIX操作系統(tǒng)的課程,這門課程配備的教材就是安德魯教授的《操作系統(tǒng):設(shè)計(jì)與實(shí)現(xiàn)》,托瓦茲通過這門課程學(xué)習(xí)了編寫操作系統(tǒng)的基本思想。

1991年,還是大學(xué)生的托瓦茲自己編寫了Linux操作系統(tǒng)內(nèi)核,并把它的源代碼公布到學(xué)校網(wǎng)站上,并通過用戶的反饋來持續(xù)更新它。30多年過去了,Linux操作系統(tǒng)已經(jīng)成為目前最大的開源操作系統(tǒng)之一,而且它還在不斷進(jìn)步、不斷更新,托瓦茲也仍然領(lǐng)導(dǎo)著Linux項(xiàng)目。現(xiàn)在,幾乎在所有的計(jì)算領(lǐng)域中都可以看到Linux操作系統(tǒng)的身影,大到超級(jí)計(jì)算機(jī)、服務(wù)器等設(shè)備,小到智能手機(jī)、智能穿戴設(shè)備。托瓦茲創(chuàng)造了一個(gè)時(shí)代,他讓開源軟件被人們熟知,讓更多的人為開源軟件做出貢獻(xiàn),開源的路也走得越來越遠(yuǎn)、越來越平穩(wěn)。

Linux操作系統(tǒng)是開源軟件,每個(gè)人都可以免費(fèi)使用,盡管有很多基于Linux操作系統(tǒng)的商業(yè)化產(chǎn)品,但是托瓦茲對(duì)于Linux操作系統(tǒng)本身卻沒有任何商業(yè)化的想法。托瓦茲說:“我沒有考慮過讓Linux操作系統(tǒng)商業(yè)化。目前,開源對(duì)Linux操作系統(tǒng)的發(fā)展貢獻(xiàn)很大,開發(fā)人員社區(qū)也很成熟。坦白講,我也不擅長(zhǎng)做這個(gè)。我喜歡通過開源讓各地的開發(fā)愛好者們參與其中,做他們擅長(zhǎng)做的事。這也意味著我可以專注于技術(shù),而其他人可以幫忙推廣。在很長(zhǎng)一段時(shí)間里,我不讓自己進(jìn)入跟Linux操作系統(tǒng)有關(guān)的營(yíng)利性公司,于是進(jìn)入了一家跟Linux操作系統(tǒng)毫無關(guān)聯(lián)的創(chuàng)業(yè)公司,這樣就不會(huì)讓我的個(gè)人主觀偏好影響到工作。過去10年,盡管我做的是跟Linux操作系統(tǒng)相關(guān)的工作,并且也因此獲得薪水,但是為了不參與到帶有傾向性的競(jìng)爭(zhēng)中,我加入了一家非營(yíng)利組織(Linux基金會(huì))。這樣,我的‘維護(hù)者’的角色就能得到大家的認(rèn)可。”

盡管托瓦茲已經(jīng)為L(zhǎng)inux操作系統(tǒng)持續(xù)工作了30多年,但是他依然對(duì)這個(gè)項(xiàng)目充滿熱情,并對(duì)內(nèi)核中持續(xù)出現(xiàn)的新技術(shù)和新創(chuàng)新感到興奮和驚嘆。我們?cè)趯W(xué)習(xí)Linux操作系統(tǒng)的同時(shí),也應(yīng)該學(xué)習(xí)托瓦茲這種一直向前的精神。

1.1.2 Linux操作系統(tǒng)的特點(diǎn)

Linux操作系統(tǒng)能夠在服務(wù)器上長(zhǎng)時(shí)間保持穩(wěn)定而高效的工作,同時(shí),Linux操作系統(tǒng)也受到PC端的持續(xù)關(guān)注。近年來,隨著圖形用戶界面的不斷改進(jìn),Linux的易用性也變得越來越好,許多用戶都在學(xué)習(xí)使用Linux操作系統(tǒng)。綜合來看,Linux操作系統(tǒng)有如下7點(diǎn)突出優(yōu)勢(shì)。

獲取成本低。Linux內(nèi)核是免費(fèi)發(fā)布的,基于Linux內(nèi)核開發(fā)的各類發(fā)行版基本上也是免費(fèi)發(fā)布的。盡管也有商業(yè)化的Linux操作系統(tǒng),但是它們一般是按需收取技術(shù)支持和服務(wù)費(fèi)用的。哪怕是運(yùn)行在服務(wù)器上的Linux操作系統(tǒng),也基本上不向用戶收取或少收取費(fèi)用。

穩(wěn)定和可靠。Linux操作系統(tǒng)的內(nèi)核和系統(tǒng)組件不僅能在工作的數(shù)月內(nèi)保持穩(wěn)定,而且在長(zhǎng)時(shí)間的運(yùn)行中也能保證性能沒有明顯下降。同時(shí),Linux操作系統(tǒng)也能夠在CPU滿負(fù)荷狀態(tài)下持續(xù)工作,極少出現(xiàn)系統(tǒng)故障。另外,Linux操作系統(tǒng)在進(jìn)行系統(tǒng)升級(jí)、驅(qū)動(dòng)安裝、參數(shù)配置等操作之后,除非要用到某些關(guān)鍵詞的內(nèi)核功能,否則在正常情況下無須重新啟動(dòng)系統(tǒng)。

多用戶和多任務(wù)。Linux操作系統(tǒng)支持多個(gè)用戶使用同一臺(tái)計(jì)算機(jī),并且通過權(quán)限來保護(hù)不同用戶的文件,防止相互影響。多任務(wù)則是現(xiàn)代操作系統(tǒng)的一大特點(diǎn),Linux操作系統(tǒng)允許多個(gè)程序(進(jìn)程)同時(shí)且獨(dú)立地運(yùn)行。

多種用戶界面。Linux操作系統(tǒng)可以支持純命令行界面(也稱為字符界面)的操作,一般適用于經(jīng)驗(yàn)豐富的用戶,這對(duì)于遠(yuǎn)程控制、服務(wù)器操作都非常便利。同時(shí),Linux操作系統(tǒng)也支持圖形用戶界面的操作,且適用于任何用戶,方便用戶通過鼠標(biāo)點(diǎn)擊、觸摸屏的方式操作計(jì)算機(jī),對(duì)用戶很友好。不論是命令行界面還是圖形界面,用戶都可以對(duì)Linux操作系統(tǒng)進(jìn)行自由配置,滿足用戶的個(gè)性化需求。

支持多種平臺(tái)。Linux操作系統(tǒng)可以在多種平臺(tái)上運(yùn)行,如x86、x64、ARM、LoongArch64、Alpha等多種計(jì)算機(jī)處理器平臺(tái),小到筆記本計(jì)算機(jī),大到特大型機(jī)、超級(jí)計(jì)算機(jī),都能運(yùn)行Linux操作系統(tǒng)。此外,它也支持各類嵌入式平臺(tái),如機(jī)頂盒、路由器、交換機(jī)、掌上游戲機(jī)等。

開放源代碼。Linux操作系統(tǒng)是開源系統(tǒng),任何人都可以方便地從網(wǎng)上免費(fèi)獲取Linux內(nèi)核源碼。人們可以自由地修改代碼、添加功能,通過編程來進(jìn)一步了解操作系統(tǒng)的工作原理,遇到困難時(shí)還可以通過指導(dǎo)手冊(cè)、幫助文檔、論壇和網(wǎng)絡(luò)資源來尋求答案。通過學(xué)習(xí)Linux源代碼,很多使用C語言進(jìn)行開發(fā)的工程師、學(xué)生、研究人員可以快速提高開發(fā)能力。開源Linux操作系統(tǒng)適用于用C語言進(jìn)行開發(fā)的用戶,它是一個(gè)極好的C語言進(jìn)階編程教學(xué)示例。不僅如此,Linux操作系統(tǒng)也接受任何人提交的修復(fù)和升級(jí)補(bǔ)丁,使得整個(gè)系統(tǒng)更加穩(wěn)定和先進(jìn)。

可定制性。Linux的一大特色就是它的可定制性,用戶可以根據(jù)自身需求來定制自己的操作系統(tǒng),簡(jiǎn)單的有桌面布局、圖標(biāo)、菜單選項(xiàng)的搭配,專業(yè)的有計(jì)算機(jī)腳本、虛擬終端、硬盤文件系統(tǒng)的配置,甚至連內(nèi)核的運(yùn)行參數(shù)、計(jì)算機(jī)的啟動(dòng)引導(dǎo)方式等都可以進(jìn)行修改。

任何人都可以提交修復(fù)補(bǔ)丁

在很多人的理解中,提交補(bǔ)丁是程序高手才能做到的事。實(shí)際上,任何有用的、具有修復(fù)或改進(jìn)功能的補(bǔ)丁都會(huì)被接受,甚至不一定是代碼本身,所以并不一定是會(huì)寫程序的人才能提交補(bǔ)丁。2014年,一個(gè)4歲的小女孩提交了Linux操作系統(tǒng)的補(bǔ)丁郵件(如圖1-10所示),并且這個(gè)補(bǔ)丁已被合并到代碼中。她所提交的補(bǔ)丁其實(shí)只是代碼注釋中的一個(gè)“-”字符,雖然這只是一個(gè)很小的修改,但是修改的意義卻非常大。這說明了Linux操作系統(tǒng)有兩個(gè)很重要的特征:

(1)Linux內(nèi)核的代碼修改可以讓所有人參與進(jìn)來;

(2)Linux內(nèi)核非常嚴(yán)謹(jǐn),只要有錯(cuò)誤,任何人都可以修改它。

圖1-10 4歲的小女孩提交的補(bǔ)丁郵件

主站蜘蛛池模板: 观塘区| 福鼎市| 平果县| 梁山县| 和静县| 湖口县| 关岭| 嵊泗县| 固镇县| 澄迈县| 阿合奇县| 景德镇市| 甘德县| 灵璧县| 邓州市| 虞城县| 东乌珠穆沁旗| 建水县| 新龙县| 高阳县| 永春县| 农安县| 公主岭市| 宜昌市| 封开县| 徐闻县| 咸宁市| 玛曲县| 双流县| 许昌县| 普兰县| 嘉鱼县| 怀来县| 松潘县| 阿合奇县| 阿荣旗| 广南县| 巢湖市| 咸丰县| 延川县| 安达市|