- 細說Linux基礎知識
- 兄弟連教育
- 3481字
- 2019-09-09 16:28:24
1.2 從UNIX到Linux
UNIX與Linux之間的關系是一個很有意思的話題。在目前主流的服務器端操作系統中,UNIX誕生于20世紀60年代末,Windows誕生于20世紀80年代中期,Linux誕生于20世紀90年代初,可以說UNIX是操作系統中的“老大哥”。
1.2.1 UNIX的坎坷歷史
UNIX操作系統由肯·湯普森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)發明。它的部分技術來源可追溯到從1965年開始的Multics工程計劃,該計劃由貝爾實驗室、美國麻省理工學院和通用電氣公司聯合發起,目標是開發一種交互式的、具有多道程序處理能力的分時操作系統,以取代當時廣泛使用的批處理操作系統。
說明:分時操作系統使一臺計算機可以同時為多個用戶服務,連接計算機的終端用戶交互式發出命令,操作系統采用時間片輪轉的方式處理用戶的服務請求并在終端上顯示結果(操作系統將CPU的時間劃分成若干個片段,稱為時間片)。操作系統以時間片為單位,輪流為每個終端用戶服務,每次服務一個時間片。
可惜,由于Multics工程計劃所追求的目標太龐大、太復雜,以至于它的開發人員都不知道要做成什么樣子,最終以失敗收場。
以肯·湯普森為首的貝爾實驗室研究人員吸取了Multics工程計劃失敗的經驗教訓,于1969年實現了一種分時操作系統的雛形,1970年該系統正式取名為UNIX。想一下英文中的前綴Multi和Uni,就明白了UNIX的隱意。Multi是大的意思,大而且繁;而Uni是小的意思,小而且巧。這是UNIX開發者的設計初衷,這個理念一直影響至今。
有意思的是,肯·湯普森當年開發UNIX的初衷是運行他編寫的一款計算機游戲Space Travel,這款游戲模擬太陽系天體運動,由玩家駕駛飛船,觀賞景色并嘗試在各種行星和月亮上登陸。他先后在多個系統上試驗,但運行效果不甚理想,于是決定自己開發一個操作系統,就這樣,UNIX誕生了。
自1970年后,UNIX系統在貝爾實驗室內部的程序員之間逐漸流行起來。1971—1972年,肯·湯普森的同事丹尼斯·里奇發明了傳說中的C語言,這是一種適合編寫系統軟件的高級語言,它的誕生是UNIX系統發展過程中的一個重要里程碑,它宣告了在操作系統的開發中,匯編語言不再是主宰。到了1973年,UNIX系統的絕大部分源代碼都用C語言進行了重寫,這為提高UNIX系統的可移植性打下了基礎(之前操作系統多采用匯編語言,對硬件依賴性強),也為提高系統軟件的開發效率創造了條件。可以說,UNIX系統與C語言是一對孿生兄弟,具有密不可分的關系。
20世紀70年代初,計算機界還有一項偉大的發明——TCP/IP協議,這是當年美國國防部接手ARPAnet后所開發的網絡協議。美國國防部把TCP/IP協議與UNIX系統、C語言捆綁在一起,由AT&T發行給美國各個大學非商業的許可證,這為UNIX系統、C語言、TCP/IP協議的發展拉開了序幕,它們分別在操作系統、編程語言、網絡協議這三個領域影響至今。肯·湯普森和丹尼斯·里奇因在計算機領域做出的杰出貢獻,于1983年獲得了計算機科學的最高獎——圖靈獎。

左圖為肯·湯普森與丹尼斯·里奇的合影,天才都是不修邊幅的……
隨后出現了各種版本的UNIX系統,目前常見的有Sun Solaris、FreeBSD、IBM AIX、HP-UX等。
我們重點介紹一下Solaris,它是UNIX系統的一個重要分支。Solaris除可以運行在SPARC CPU平臺上外,還可以運行在x86 CPU平臺上。在服務器市場上,Sun的硬件平臺具有高可用性和高可靠性,是市場上處于支配地位的UNIX系統。對于難以接觸到Sun SPARC架構計算機的用戶來說,可以通過使用Solaris x86來體驗世界知名大廠的商業UNIX風采。當然,Solaris x86也可以用于實際生產應用的服務器,在遵守Sun的有關許可條款的情況下,Solaris x86可以免費用于學習研究或商業應用。
FreeBSD源于美國加利福尼亞大學伯克利分校開發的UNIX版本,它由來自世界各地的志愿者開發和維護,為不同架構的計算機系統提供了不同程度的支持。FreeBSD在BSD許可協議下發布,允許任何人在保留版權和許可協議信息的前提下隨意使用和發行,并不限制將FreeBSD的代碼在另一個協議下發行,因此商業公司可以自由地將FreeBSD代碼融入它們的產品中。蘋果公司的OS X就是基于FreeBSD的操作系統。

FreeBSD與Linux的用戶群有相當一部分是重合的,二者支持的硬件環境也比較一致,所采用的軟件也比較類似。FreeBSD的最大特點就是穩定和高效,是作為服務器操作系統的不錯選擇;但其對硬件的支持沒有Linux完備,所以并不適合作為桌面系統。
其他UNIX版本因應用范圍相對有限,在此不做過多介紹。
1.2.2 Linux的那些往事
Linux內核最初是由李納斯·托瓦茲(Linus Torvalds)在赫爾辛基大學讀書時出于個人愛好而編寫的,當時他覺得教學用的迷你版UNIX操作系統Minix太難用了,于是決定自己開發一個操作系統。第一個版本于1991年9月發布,當時僅有10000行代碼。

李納斯·托瓦茲沒有保留Linux源代碼的版權,公開了代碼,并邀請他人一起完善Linux。與Windows及其他有專利權的操作系統不同,Linux開放源代碼,任何人都可以免費使用它。
據估計,現在只有2%的Linux核心代碼是由李納斯·托瓦茲自己編寫的,雖然他仍然擁有Linux內核(操作系統的核心部分),并且保留了選擇新代碼和需要合并的新方法的最終裁定權。現在大家所使用的Linux,筆者更傾向于說是由李納斯·托瓦茲和后來陸續加入的眾多Linux愛好者共同開發完成的。
李納斯·托瓦茲無疑是這個世界上最偉大的程序員之一,何況,他還搞出了全世界最大的程序員交友社區GitHub(開源代碼庫及版本控制系統)。
關于Linux Logo的由來是一個很有意思的話題,它是一只企鵝。
為什么選擇企鵝,而不是選擇獅子、老虎或者小白兔?有人說因為李納斯·托瓦茲是芬蘭人,所以選擇企鵝;有人說因為其他動物圖案都被用光了,李納斯·托瓦茲只好選擇企鵝。

筆者更愿意相信以下說法:
企鵝是南極洲的標志性動物,根據國際公約,南極洲為全人類共同所有,不屬于世界上的任何國家,任何國家都無權將南極洲納入其版圖。Linux選擇企鵝圖案作為Logo,其含義是:開放源代碼的Linux為全人類共同所有,任何公司無權將其私有。
1.2.3 UNIX與Linux的親密關系
二者的關系,不是大哥和小弟,“UNIX是Linux的父親”這個說法更恰當。之所以要介紹它們的關系,是因為要告訴讀者,在學習的時候,其實Linux與UNIX有很多的共通之處,簡單地說,如果你已經熟練掌握了Linux,那么再上手使用UNIX會非常容易。
二者也有兩個大的區別:其一,UNIX系統大多是與硬件配套的,也就是說,大多數UNIX系統如AIX、HP-UX等是無法安裝在x86服務器和個人計算機上的,而Linux則可以運行在多種硬件平臺上;其二,UNIX是商業軟件,而Linux是開源軟件,是免費、公開源代碼的。
Linux受到廣大計算機愛好者的喜愛,主要原因有兩個:一是它屬于開源軟件,用戶不用支付任何費用就可以獲得它和它的源代碼,并且可以根據自己的需要對它進行必要的修改,無償使用,無約束地繼續傳播;二是它具有UNIX的全部功能,任何使用UNIX操作系統或想要學習UNIX操作系統的人都可以從Linux中獲益。
開源軟件是不同于商業軟件的一種模式,從字面上理解,就是開放源代碼,大家不用擔心里面會搞什么貓膩,這會帶來軟件的革新和安全。
另外,開源其實并不等同于免費,而是一種新的軟件盈利模式。目前很多軟件都是開源軟件,對計算機行業與互聯網影響深遠。
開源軟件本身的模式、概念比較晦澀,本書旨在指導讀者應用Linux,大家簡要理解即可。
近年來,Linux已經青出于藍而勝于藍,以超常的速度發展,從一個丑小鴨變成了一個擁有龐大用戶群的真正優秀的、值得信賴的操作系統。歷史的車輪讓Linux成為UNIX最優秀的傳承者。
1.2.4 UNIX/Linux系統結構
UNIX/Linux系統可以粗糙地抽象為3個層次(所謂粗糙,就是不夠細致、精準,但是便于初學者抓住重點理解),如圖1-1所示。底層是UNIX/Linux操作系統,一般稱之為系統內核(Kernel);中間層是Shell層,即命令解釋層;高層則是應用層。

圖1-1 UNIX/Linux系統結構層次概要
1.內核層
內核層是UNIX/Linux系統的核心和基礎,它直接附著在硬件平臺之上,控制和管理系統內各種資源(硬件資源和軟件資源),有效地組織進程的運行,從而擴展硬件的功能,提高資源的利用效率,為用戶提供方便、高效、安全、可靠的應用環境。
2.Shell層
Shell層是與用戶直接交互的界面。用戶可以在提示符下輸入命令行,由Shell解釋執行并輸出相應結果或者有關信息,所以我們也把Shell稱作命令解釋器,利用系統提供的豐富命令可以快捷而簡便地完成許多工作。
3.應用層
應用層提供基于X Window協議的圖形環境。X Window協議定義了一個系統所必須具備的功能(就如同TCP/IP是一個協議,定義軟件所應具備的功能),任何系統能滿足此協議及符合X協會其他的規范,便可稱為X Window。
現在大多數的UNIX系統上(包括Solaris、HP-UX、AIX等)都可以運行CDE(Common Desktop Environment,通用桌面環境,是運行于UNIX的商業桌面環境)的用戶界面;而在Linux上廣泛應用的有Gnome(見圖1-2)、KDE等。

圖1-2 Gnome圖形界面
X Window與微軟的Windows圖形環境有很大的區別:UNIX/Linux系統與X Window沒有必然捆綁的關系,也就是說,UNIX/Linux可以安裝X Window,也可以不安裝;而微軟的Windows圖形環境與內核捆綁密切。UNIX/Linux系統不依賴圖形環境,依然可以通過命令行完成100%的功能,而且因為不使用圖形環境還會節省大量的系統資源。
作為服務器部署,絕大多數Linux并不安裝或并不啟用圖形環境,本書的講解也基本上為Linux命令行下的操作。
- Linux網絡管理與配置(第2版)
- Kali Linux滲透測試全流程詳解
- 精通Linux內核開發
- Linux性能優化
- SharePoint 2013 應用開發實戰
- Windows 7應用入門與技巧
- 新編電腦辦公(Windows 10+ Office 2013版)從入門到精通
- Advanced Infrastructure Penetration Testing
- Learning BeagleBone
- Drupal 7 Cookbook
- 統信UOS應用開發進階教程
- Getting Started with Raspberry Pi Zero
- Windows 10從入門到精通
- 微信小程序項目開發實戰:用WePY、mpvue、Taro打造高效的小程序
- Instant Google Compute Engine