1. 程式人生 > 其它 >Linux的那些事

Linux的那些事

一些概念

Unix與Linux

Linux和UNIX的關係及區別(詳解版)

在目前主流的伺服器端作業系統中,UNIX 誕生於 20 世紀 60 年代末,Windows 誕生於 20 世紀 80 年代中期,Linux 誕生於 20 世紀 90 年代初,可以說 UNIX 是作業系統中的"老大哥",後來的 Windows 和 Linux 都參考了 UNIX。

現代的 Windows 系統已經朝著“圖形介面”的方向發展了,和 UNIX 系統有了巨大的差異,從表面上甚至看不出兩者的關聯。

Unix

Uni 是小的意思,小而且巧。這是 UNIX 開發者的設計初衷,這個理念一直影響至今。

有意思的是,肯•湯普森當年開發 UNIX 的初衷是執行他編寫的一款計算機遊戲 Space Travel,這款遊戲模擬太陽系天體運動,由玩家駕駛飛船,觀賞景色並嘗試在各種行星和月亮上登陸。他先後在多個系統上試驗,但執行效果不甚理想,於是決定自己開發作業系統,就這樣,UNIX 誕生了。

Linux

Linux 核心最初是由李納斯•託瓦茲(Linus Torvalds)在赫爾辛基大學讀書時出於個人愛好而編寫的,當時他覺得教學用的迷你版 UNIX 作業系統 Minix 太難用了,於是決定自己開發一個作業系統。第 1 版本於 1991 年 9 月釋出,當時僅有 10 000 行程式碼。

李納斯•託瓦茲沒有保留 Linux 原始碼的版權,公開了程式碼,並邀請他人一起完善 Linux。與 Windows 及其他有專利權的作業系統不同,Linux 開放原始碼,任何人都可以免費使用它。
據估計,現在只有 2% 的 Linux 核心程式碼是由李納斯•託瓦茲自己編寫的,雖然他仍然擁有 Linux 核心(作業系統的核心部分),並且保留了選擇新程式碼和需要合併的新方法的最終裁定權。現在大家所使用的 Linux,我更傾向於說是由李納斯•託瓦茲和後來陸續加入的眾多 Linux 好者共同開發完成的。

二者也有兩個大的區別:

  1. UNIX 系統大多是與硬體配套的,也就是說,大多數 UNIX 系統如 AIX、HP-UX 等是無法安裝在 x86 伺服器和個人計算機上的,而 Linux 則可以執行在多種硬體平臺上;
  2. UNIX 是商業軟體,而 Linux 是開源軟體,是免費、公開原始碼的。

Linux 受至曠大計算機愛好者的喜愛,主要原因也有兩個:

  1. 它屬於開源軟體,使用者不用支付可費用就可以獲得它和它的原始碼,並且可以根據自己的需要對它進行必要的修改,無償使用,無約束地繼續傳播。【開源其實並不等同於免費,而是一種新的軟體盈利模式。】;
  2. 它具有 UNIX 的全部功能,任何使用 UNIX 作業系統或想要學習 UNIX 作業系統的人都可以從 Linux 中獲益。

Linux 是一個類似 Unix 的作業系統,Unix 要早於 Linux,Linux 的初衷就是要替代 UNIX,並在功能和使用者體驗上進行優化,所以 Linux 模仿了 UNIX(但並沒有抄襲 UNIX 的原始碼),使得 Linux 在外觀和互動上與 UNIX 非常類似。

系統結構

UNIX/Linux 系統結掏層次概要

底層是 UNIX/Linux 作業系統,即系統核心(Kernel);中間層是 Shell 層,即命令解釋層;高層則是應用層。

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(見圖 4)、KDE 等。

Gnome圖形介面

X Window 與微軟的 Windows 圖形環境有很大的區別:

  • UNIX/Linux 系統與 X Window 沒有必然捆綁的關係,也就是說,UNIX/Linux 可以安裝 X Window,也可以不安裝;而微軟的 Windows 圖形環境與核心捆綁密切
  • UNIX/Linux 系統不依賴圖形環境,依然可以通過命令列完成 100% 的功能,而且因為不使用圖形環境還會節省大量的系統資源。

作為伺服器部署,絕大多數 Linux 並不安裝或並不啟用圖形環境。

Unix與Windows

其實Unix很簡單

1、Unix的一個最重要的特點——“高內聚,低藕合”!也就是說,Unix下的各種應用程式都和別人不相干。這就是貫穿整個Unix的思維——模組和程式的高度獨立性。這樣的設計和做法,會讓你的系統比較的穩定,也會讓你的系統特別地容易管理和維護。Unix下的應用程式們就像一支正規軍一樣排列地整整齊齊,只要司令(核心)還在,系統是不會因為某個軍隊的損失而無法自舉的。而Windows的應用程式們就像一片樹林一樣,從地表上看過去,樹木們排列地整整齊齊,但是他們的樹根在地下卻相互纏繞在一起,剪不斷,理還亂,異常地複雜。

“高內聚,低藕合”的給Unix造成的結果是,其系統中基本上都是功能單一的小程式,這些小程式就像積木一樣,當我們需要構造建一個自定義的建築時,大多數情況下,我們只需要做的只是一個“搭積木”的簡單遊戲。Windows建設得富麗堂皇,可惜,別人的“積木”你幾乎不可能拿到自己的建築中來。總是要你模仿或重寫。

2、Unix的另一個最重要的特點——“所有的裝置都可以像檔案一樣地操作”。簡單吧。所有的調備,檔案、印表機、顯示器、終端、網路、軟盤、磁帶、USB、CDROM、等等的I/O操作,都以檔案描述符的方式進行操作。兩個Unix下最重要的系統呼叫read/write就可以勝任所有裝置的I/O了。Unix早就在/dev目錄下為你建好了這些檔案。使用起來很簡單。

3、也許很多人都覺得Unix的命令列太過複雜。一個命令有著若干的引數,異常地複雜。但之所以今天Unix下的應用程式還在以字元介面為主,這恰好體現了Unix的簡單的特徵。這也是Unix的另一個特點——“命令的相互支援性”,命令們通過一個管道或是重定向,可以互相聯絡在一起,再加以Shell指令碼的支援,哪怕要實現一些複雜的功能(比如一個小型的文字資料庫),也是簡單之極。

阿里雲安裝圖形化桌面

基於效能及通用性等因素的考慮,阿里雲官方提供的公共Linux系統映象中預設不安裝圖形化桌面元件。您可以根據實際需要,為常用的Linux例項安裝圖形化桌面。

為Linux例項安裝圖形化桌面環境