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

1.3 從UNIX到Linux

UNIX與Linux之間的關(guān)系是一個很有意思的話題。在目前主流的服務(wù)器端操作系統(tǒng)中,UNIX誕生于20世紀(jì)60年代末,Windows誕生于20世紀(jì)80年代中期,Linux誕生于20世紀(jì)90年代初,可以說UNIX是操作系統(tǒng)中的“老大哥”。

1.3.1 UNIX的歷史

UNIX操作系統(tǒng)由肯·湯普森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)發(fā)明。它的部分技術(shù)來源可追溯到從1965年開始的Multics工程計(jì)劃,該計(jì)劃由貝爾實(shí)驗(yàn)室、美國麻省理工學(xué)院和通用電氣公司聯(lián)合發(fā)起,目標(biāo)是開發(fā)一種交互式的、具有多道程序處理能力的分時操作系統(tǒng),可以取代當(dāng)時廣泛使用的批處理操作系統(tǒng)。

說明:分時操作系統(tǒng)使一臺計(jì)算機(jī)可以同時為多個用戶服務(wù),連接計(jì)算機(jī)的終端用戶以交互式方式發(fā)出命令,操作系統(tǒng)采用時間片輪轉(zhuǎn)的方式處理用戶的服務(wù)請求,并在終端上顯示結(jié)果(操作系統(tǒng)將CPU的時間劃分成若干個片段,稱為時間片)。操作系統(tǒng)以時間片為單位,輪流為每個終端用戶服務(wù),每次服務(wù)一個時間片。

可惜,由于Multics工程計(jì)劃所追求的目標(biāo)太龐大、太復(fù)雜,以至于它的開發(fā)人員都不知道要做成什么樣子,最終以失敗收場。

以肯·湯普森為首的貝爾實(shí)驗(yàn)室研究人員吸取了Multics工程計(jì)劃失敗的經(jīng)驗(yàn)教訓(xùn),于1969年實(shí)現(xiàn)了一種分時操作系統(tǒng)的雛形,1970年該系統(tǒng)正式取名為UNIX。想一下英文中的前綴Multi和Uni,就明白了UNIX的隱意。Multi是大的意思,大而繁雜;而Uni是小的意思,小而精巧。這是UNIX開發(fā)者的設(shè)計(jì)初衷,這個理念一直影響至今。

有意思的是,肯·湯普森當(dāng)年開發(fā)UNIX的初衷是運(yùn)行他編寫的一款計(jì)算機(jī)游戲Space Travel(太空旅行),這款游戲模擬太陽系的天體運(yùn)動,由玩家駕駛飛船,觀賞景色并嘗試在各種行星和月亮上登陸。他先后在多個系統(tǒng)上實(shí)驗(yàn),但運(yùn)行效果不甚理想,于是決定自己開發(fā)一個操作系統(tǒng),就這樣UNIX誕生了。

自1970年后,UNIX系統(tǒng)在貝爾實(shí)驗(yàn)室內(nèi)部的程序員之間逐漸流行起來。1972年,肯·湯普森的同事丹尼斯·里奇發(fā)明了傳說中的C語言,這是一種適合編寫系統(tǒng)軟件的高級語言,它的誕生是UNIX系統(tǒng)發(fā)展過程中的一個重要里程碑,它宣告了在操作系統(tǒng)的開發(fā)中,匯編語言不再是主宰。到了1973年,UNIX系統(tǒng)的絕大部分源代碼都用C語言進(jìn)行了重寫,這為提高UNIX系統(tǒng)的可移植性打下了基礎(chǔ)(之前操作系統(tǒng)多采用匯編語言,對硬件依賴性強(qiáng)),也為提高系統(tǒng)軟件的開發(fā)效率創(chuàng)造了條件。可以說,UNIX系統(tǒng)與C語言是一對孿生兄弟,具有密不可分的關(guān)系。

20世紀(jì)70年代初,計(jì)算機(jī)界還有一項(xiàng)偉大的發(fā)明——TCP/IP協(xié)議,這是當(dāng)年美國國防部接手ARPAnet后所開發(fā)的網(wǎng)絡(luò)協(xié)議。美國國防部把TCP/IP協(xié)議與UNIX系統(tǒng)、C語言捆綁在一起,由AT&T發(fā)行給美國各個大學(xué)非商業(yè)的許可證,這為UNIX系統(tǒng)、C語言、TCP/IP協(xié)議的發(fā)展拉開了序幕,它們分別在操作系統(tǒng)、編程語言、網(wǎng)絡(luò)協(xié)議這三個領(lǐng)域影響至今。肯·湯普森和丹尼斯·里奇因其在計(jì)算機(jī)領(lǐng)域做出的杰出貢獻(xiàn),于1983年獲得了計(jì)算機(jī)科學(xué)的最高獎——圖靈獎。

隨后出現(xiàn)了各種版本的UNIX系統(tǒng),目前常見的有Solaris、FreeBSD、IBM AIX、HP-UX等。

我們重點(diǎn)介紹一下Solaris,它是UNIX系統(tǒng)的一個重要分支。Solaris除了可以運(yùn)行在SPARC CPU平臺上,還可以運(yùn)行在x86 CPU平臺上。在服務(wù)器市場上,Sun的硬件平臺具有高可用性和高可靠性,是市場上處于支配地位的UNIX系統(tǒng)。對于難以接觸到Sun SPARC架構(gòu)計(jì)算機(jī)的用戶來說,可以通過使用Solaris x86來體驗(yàn)世界知名大廠的商業(yè)UNIX風(fēng)采。當(dāng)然,Solaris x86也可以用于實(shí)際生產(chǎn)應(yīng)用的服務(wù)器,在遵守Sun的有關(guān)許可條款的情況下,Solaris x86可以免費(fèi)用于學(xué)習(xí)研究或商業(yè)應(yīng)用。

FreeBSD源于美國加利福尼亞大學(xué)伯克利分校開發(fā)的UNIX版本,它由來自世界各地的志愿者開發(fā)和維護(hù),為不同架構(gòu)的計(jì)算機(jī)系統(tǒng)提供了不同程度的支持。FreeBSD在BSD許可協(xié)議下發(fā)布,允許任何人在保留版權(quán)和許可協(xié)議信息的前提下隨意使用和發(fā)行,并不限制將FreeBSD的代碼在另一個協(xié)議下發(fā)行,因此商業(yè)公司可以自由地將FreeBSD代碼融入它們的產(chǎn)品中。蘋果公司的OS X就是基于FreeBSD的操作系統(tǒng)。

FreeBSD與Linux的用戶群有相當(dāng)一部分是重合的,二者支持的硬件環(huán)境也比較一致,所采用的軟件也比較類似。FreeBSD的最大特點(diǎn)是穩(wěn)定和高效,是作為服務(wù)器操作系統(tǒng)的不錯選擇;然而,由于其對硬件的支持沒有Linux完備,因此并不適合作為桌面系統(tǒng)使用。

其他UNIX版本因應(yīng)用范圍相對有限,在此不做過多介紹。

1.3.2 Linux的誕生

Linux內(nèi)核最初是由李納斯·托瓦茲(Linus Torvalds)在赫爾辛基大學(xué)讀書時出于個人愛好而編寫的,當(dāng)時他覺得教學(xué)用的迷你版UNIX操作系統(tǒng)Minix太難用了,于是決定自己開發(fā)一個操作系統(tǒng)。第一個版本于1991年9月發(fā)布,當(dāng)時僅有10000行代碼。

李納斯·托瓦茲沒有保留Linux源代碼的版權(quán),而是公開了代碼,并邀請他人一起完善Linux。與Windows及其他有專利權(quán)的操作系統(tǒng)不同,Linux開放了源代碼,任何人都可以免費(fèi)使用它。

據(jù)估計(jì),現(xiàn)在只有2%的Linux核心代碼是由李納斯·托瓦茲自己編寫的,雖然他仍然擁有Linux內(nèi)核(操作系統(tǒng)的核心部分),并且保留了選擇新代碼和需要合并的新方法的最終裁定權(quán)。現(xiàn)在大家所使用的Linux,筆者更傾向于說是由李納斯·托瓦茲和后來陸續(xù)加入的眾多Linux愛好者共同開發(fā)完成的。

李納斯·托瓦茲無疑是這個世界上最偉大的程序員之一,何況他還發(fā)明了全世界最大的程序員交友社區(qū)GitHub(開源代碼庫及版本控制系統(tǒng))。

關(guān)于Linux的Logo的由來是一個很有意思的話題,它是一只企鵝如圖1-1所示。

為什么選擇企鵝,而不是選擇獅子、老虎或者小白兔?有人說因?yàn)槔罴{斯·托瓦茲是芬蘭人,所以選擇企鵝;有人說因?yàn)槠渌麆游飯D案都被用光了,李納斯·托瓦茲只好選擇企鵝。

img

圖1-1 Linux圖標(biāo)

筆者更愿意相信以下說法:企鵝是南極洲的標(biāo)志性動物,根據(jù)國際公約,南極洲為全人類共同所有,不屬于世界上的任何國家,任何國家都無權(quán)將南極洲納入其版圖。Linux選擇企鵝圖案作為Logo,其含義是:開放源代碼的Linux為全人類共同所有,任何公司無權(quán)將其私有。

1.3.3 UNIX與Linux不可分割的關(guān)系

二者的關(guān)系,不是大哥和小弟,“UNIX是Linux的父親”這個說法更恰當(dāng)。之所以要介紹它們的關(guān)系,是因?yàn)橐嬖V讀者,在學(xué)習(xí)的時候,其實(shí)Linux與UNIX有很多的共通之處,簡單地說,如果你已經(jīng)熟練掌握了Linux,那么再上手使用UNIX會非常容易。

二者也有兩個大的區(qū)別:其一,UNIX系統(tǒng)大多是與硬件配套的,也就是說,大多數(shù)UNIX系統(tǒng)如AIX、HP-UX等是無法安裝在x86服務(wù)器和個人計(jì)算機(jī)上的,而Linux則可以運(yùn)行在多種硬件平臺上;其二,UNIX是商業(yè)軟件,而Linux是開源軟件,是免費(fèi)、公開源代碼的。

Linux受到廣大計(jì)算機(jī)愛好者的喜愛,主要原因有兩個:一是它屬于開源軟件,用戶不用支付任何費(fèi)用就可以獲得它和它的源代碼,并且可以根據(jù)自己的需要對它進(jìn)行必要的修改,無償使用,無約束地繼續(xù)傳播;二是它具有UNIX的全部功能,任何使用UNIX操作系統(tǒng)或想要學(xué)習(xí)UNIX操作系統(tǒng)的人都可以從Linux中獲益。

開源軟件是不同于商業(yè)軟件的一種模式,從字面上理解,就是開放源代碼,大家不用擔(dān)心里面會搞什么“貓膩”,這會帶來軟件的革新和安全。

另外,開源其實(shí)并不等同于免費(fèi),而是一種新的軟件盈利模式。目前,很多軟件都是開源軟件,對計(jì)算機(jī)行業(yè)與互聯(lián)網(wǎng)影響深遠(yuǎn)。開源軟件本身的模式、概念比較晦澀,本書旨在指導(dǎo)讀者應(yīng)用Linux,大家簡要理解即可。

近年來,Linux已經(jīng)青出于藍(lán)而勝于藍(lán),以超常的速度發(fā)展,從一個“丑小鴨”變成了一個擁有龐大用戶群的、真正優(yōu)秀的、值得信賴的操作系統(tǒng)。歷史的車輪讓Linux成為UNIX最優(yōu)秀的傳承者。

1.3.4 UNIX/Linux系統(tǒng)結(jié)構(gòu)

UNIX/Linux系統(tǒng)可以粗糙地抽象為三個層次(所謂粗糙,就是不夠細(xì)致、精準(zhǔn),但是便于初學(xué)者抓住重點(diǎn)理解),三個層次的關(guān)系如圖1-2所示。底層是UNIX/Linux操作系統(tǒng),一般稱為內(nèi)核層(Kernel);中間層是Shell層,即命令解釋層;高層則是應(yīng)用層。

img

圖1-2 UNIX/Linux系統(tǒng)結(jié)構(gòu)層次概要

1.內(nèi)核層

內(nèi)核層是UNIX/Linux系統(tǒng)的核心和基礎(chǔ),它直接附著在硬件平臺之上,控制和管理系統(tǒng)內(nèi)各種資源(硬件資源和軟件資源),有效地組織進(jìn)程的運(yùn)行,從而擴(kuò)展硬件的功能,提高資源的利用效率,為用戶提供方便、高效、安全、可靠的應(yīng)用環(huán)境。

2.Shell層

Shell層是與用戶直接交互的界面。用戶可以在提示符下輸入命令行,由Shell解釋執(zhí)行并輸出相應(yīng)結(jié)果或者有關(guān)信息,所以我們也把Shell稱作命令解釋器,利用系統(tǒng)提供的豐富命令可以快捷而簡便地完成許多工作。

3.應(yīng)用層

應(yīng)用層提供基于X Window協(xié)議的圖形環(huán)境。X Window協(xié)議定義了一個系統(tǒng)所必須具備的功能(就如同TCP/IP是一個協(xié)議,定義軟件所應(yīng)具備的功能),任何系統(tǒng)能滿足此協(xié)議及符合X協(xié)會其他的規(guī)范,便可稱為X Window。

現(xiàn)在大多數(shù)的UNIX系統(tǒng)上(包括Solaris、HP-UX、AIX等)都可以運(yùn)行CDE(Common Desktop Environment,通用桌面環(huán)境,是運(yùn)行于UNIX的商業(yè)桌面環(huán)境)的用戶界面;而在Linux上廣泛應(yīng)用的有Gnome(Gnome圖形界面如圖1-3所示)、KDE等。

X Window與微軟的Windows圖形環(huán)境有很大的區(qū)別:UNIX/Linux系統(tǒng)與X Window沒有必然捆綁的關(guān)系,也就是說,UNIX/Linux可以安裝X Window,也可以不安裝;而微軟的Windows圖形環(huán)境與內(nèi)核捆綁密切。UNIX/Linux系統(tǒng)不依賴圖形環(huán)境,依然可以通過命令行完成100%的功能,而且因?yàn)椴皇褂脠D形環(huán)境還會節(jié)省大量的系統(tǒng)資源。

img

圖1-3 Gnome圖形界面

作為服務(wù)器部署,絕大多數(shù)Linux并不安裝或并不啟用圖形環(huán)境,本書的講解也基本上為Linux命令行下的操作。

主站蜘蛛池模板: 丰宁| 新余市| 盈江县| 博白县| 汨罗市| 上林县| 南江县| 通渭县| 蛟河市| 家居| 商城县| 隆化县| 甘肃省| 灵川县| 郓城县| 茶陵县| 天柱县| 渝中区| 赤水市| 南投市| 读书| 武清区| 邯郸县| 湖州市| 灌南县| 当涂县| 民丰县| 资阳市| 万安县| 农安县| 福贡县| 喜德县| 白水县| 张家港市| 丰镇市| 蓝田县| 广昌县| 麦盖提县| 年辖:市辖区| 禹州市| 信阳市|