了解什么是 Linux ,并介紹命令行和 shell 在 Linux 整體架構(gòu)中的位置
更多精彩
- 更多技術(shù)博客,請移步 IT人才終生實訓(xùn)與職業(yè)進階平臺 - 實訓(xùn)在線
1.1 什么是 Linux
-
下圖中的每一部分在 Linux 中各司其職,協(xié)同構(gòu)成一個完整的 Linux 系統(tǒng)
完整的 Linux 系統(tǒng)
1.1.1 深入探究 Linux 內(nèi)核
- 內(nèi)核是 Linux 的核心
- 內(nèi)核控制著計算機系統(tǒng)上所有的硬件和軟件,在必要時分配硬件,并根據(jù)需要執(zhí)行軟件
- 第一個版本的 Linux 內(nèi)核是由 Linus Torvalds 讀大學(xué)時編寫的
-
內(nèi)核主要負責(zé)以下四種功能
內(nèi)核主要功能
1.1.1.1 系統(tǒng)內(nèi)存管理
內(nèi)核的主要功能之一就是內(nèi)存管理
內(nèi)核不僅管理服務(wù)器上的可用物理內(nèi)存,還可以創(chuàng)建和管理虛擬內(nèi)存
內(nèi)核通過硬盤上的存儲空間來實現(xiàn)虛擬內(nèi)存,這個空間稱為 交換空間( Swap Space )
內(nèi)核不斷地在交換空間和實際物理內(nèi)存之間 反復(fù)交換虛擬內(nèi)存中的內(nèi)容 ,讓系統(tǒng)以為自己擁有比物理內(nèi)存更多的可用內(nèi)存
-
交換示意入下圖,可以看出是由內(nèi)核來統(tǒng)籌三者之間的數(shù)據(jù)交換
- 內(nèi)存存儲單元按組劃分為很多塊,這些塊稱為 頁面( Page )
- 內(nèi)核將每個內(nèi)存頁面放在物理內(nèi)存或交換空間
- 內(nèi)核同時會維護一個 內(nèi)存頁面表 ,在這個表中指定哪些頁面在物理內(nèi)存中,哪些被換到虛擬內(nèi)存中
- 內(nèi)核會記錄哪些內(nèi)存頁面正在被使用,并自動把一段時間沒有被使用的內(nèi)存頁面復(fù)制到交換空間中,這個過程被稱為 換出( Swapping Out )
內(nèi)核工作原理
-
只要 Linux 在運行,為運行中的程序換出內(nèi)存頁面的過程就不會停止,如下圖
- 當(dāng)程序要訪問一個已經(jīng)被換出的內(nèi)存頁面時
- 內(nèi)核必須從物理內(nèi)存中換出另外一個內(nèi)存頁面用于讓出空間
-
然后再從交換空間換入被訪問的內(nèi)存頁面
內(nèi)核工作流程
1.1.1.2 軟件程序管理
- Linux 將運行中的軟件程序稱為 進程
- 進程可以在前臺運行,將輸入顯示在屏幕上,也可以在后臺運行,隱藏到幕后
- Linux 中所有的進程都是由內(nèi)核控制和管理
- 內(nèi)核創(chuàng)建第一個進程 init 進程,用于啟動系統(tǒng)上所有其他進程
- 內(nèi)核在啟動任何其他進程時,都會在虛擬內(nèi)存中給新進程分配一塊專有空間來存儲進程用到的數(shù)據(jù)和代碼
- 開機時需要啟動或停止的應(yīng)用腳本一般放置在
/etc/init.d中
- 開機時需要啟動或停止的應(yīng)用腳本一般放置在
- init 進程 存在 運行級( Run Level ) 的概念
- Linux 一共有 5 個啟動運行級:
- 只啟動基本的系統(tǒng)進程以及一個控制臺終端進程,這被稱為 單用戶模式
- 通常用于在系統(tǒng)出現(xiàn)問題時進行緊急的文件系統(tǒng)維護,相當(dāng)于 Windows 的安全模式
- 還沒提到
- 標(biāo)準(zhǔn)的運行級,可以運行大多數(shù)應(yīng)用程序,例如網(wǎng)絡(luò)支持程序
- 還沒提到
- 常見的運行級,可以運行圖形化界面,允許通過圖形化界面登錄系統(tǒng)
- 只啟動基本的系統(tǒng)進程以及一個控制臺終端進程,這被稱為 單用戶模式
- Linux 可以通過調(diào)整啟動運行級來控制整個系統(tǒng)的功能
1.1.1.3 硬件設(shè)備管理
- 內(nèi)核可以管理硬件設(shè)備
- Linux 想要和任何設(shè)備通信之前,都需要在內(nèi)核代碼中加入該設(shè)備的 驅(qū)動程序代碼
- 驅(qū)動程序代碼相當(dāng)于應(yīng)用程序和硬件設(shè)備的中間人,允許內(nèi)核與設(shè)備之間交換數(shù)據(jù)
- 內(nèi)核中有以下兩種方法用于插入設(shè)備驅(qū)動程序代碼
- 編譯進內(nèi)核的設(shè)備驅(qū)動代碼
- 每次都需要重新編譯內(nèi)核,非常低效
- 可插入內(nèi)核的設(shè)備驅(qū)動模塊
- 可以方便的實現(xiàn)熱插拔,無需重新編譯內(nèi)核
- 編譯進內(nèi)核的設(shè)備驅(qū)動代碼
- 硬件設(shè)備被 Linux 識別為特殊的文件,稱為 設(shè)備文件 ,有以下三種類型
- 字符型設(shè)備文件
- 處理數(shù)據(jù)時每次只能處理一個字符,例如調(diào)制解調(diào)器
- 塊設(shè)備文件
- 處理數(shù)據(jù)時每次能處理大塊數(shù)據(jù),例如硬盤
- 網(wǎng)絡(luò)設(shè)備文件
- 進行數(shù)據(jù)包發(fā)送和接收數(shù)據(jù),例如網(wǎng)卡
- 字符型設(shè)備文件
- Linux 會為每個設(shè)備文件創(chuàng)建一個 節(jié)點 ,用于對這些設(shè)備文件進行唯一標(biāo)識
- 每個節(jié)點都是一個鍵值對,鍵是主設(shè)備號,相當(dāng)于類別,值是副設(shè)備號,指具體設(shè)備
1.1.1.4 文件系統(tǒng)管理
- 內(nèi)核支持通過不同類型的文件系統(tǒng)從硬盤讀寫數(shù)據(jù)
- 內(nèi)核采用 虛擬文件系統(tǒng)( Virtual File System ,VFS ) 作為與每個文件系統(tǒng)交互的接口
- 當(dāng)每個文件系統(tǒng)被掛載和使用時,VFS 都會將信息緩存到內(nèi)存中
-
下圖列出了 Linux 支持用于讀寫數(shù)據(jù)的標(biāo)準(zhǔn)文件系統(tǒng)
Linux 支持用于讀寫數(shù)據(jù)的標(biāo)準(zhǔn)文件系統(tǒng)
1.1.2 GNU 工具
- GNU( GNU’s Not Unix )組織在開源軟件( Open Source Software ,OSS )的軟件理念下開發(fā)了一套完整的 Unix 工具
- 將 Linux 內(nèi)核和 GNU 操作系統(tǒng)工具整合后,就產(chǎn)生了一款完整的、功能豐富的免費操作系統(tǒng)
1.1.2.1 核心 GNU 工具
- 該工具的主要作用是為 Linux 系統(tǒng)管理員設(shè)計出一套類似于 Unix 的環(huán)境
- 供 Linux 使用的核心工具被稱為 GNU Core Utilities 軟件包,包含以下三個部分
- 處理文件
- 操作文本
- 管理進程
1.1.2.2 shell
- GNU / Linux shell 是一種特殊的交互式工具,為用戶提供以下功能
- 啟動程序
- 管理文件系統(tǒng)中的文件
- 運行在 Linux 上的進程
- shell 的核心是命令行提示符
- 將多個 shell 命令放入文件中作為程序執(zhí)行,這被稱為 shell 腳本
- 所有 Linux 發(fā)行版默認的 shell 都是由 GNU 組織開發(fā)的 Bash shell
- Bash 名稱由來是根據(jù) Unix 原生的 Bournce shell 修改而來,名為 Bournce again shell
-
下圖列出了 Linux 支持的 shell 類型
Linux 支持的 shell 類型
1.1.3 Linux 桌面環(huán)境
- Linux 之所以提供桌面環(huán)境,很大因素是因為受到了 Windows 流行的影響
1.1.3.1 X Windows 系統(tǒng)
- X Windows 是圖形顯示的核心部分
- X Windows 是直接和 PC 上的顯卡及顯示器打交道的底層程序
- X Windows 控制著 Linux 程序如何在電腦上顯示出窗口和圖形
- X Windows 是底層軟件包,其實現(xiàn)形式有以下幾種:
- X.org 提供了 X Windows 的開源實現(xiàn),支持當(dāng)前市面上很多新顯卡
- Wayland 被 Fedora Linux 發(fā)行版采用
- Mir 顯示服務(wù)器由 Ubuntu Linux 發(fā)行版研發(fā)
1.1.3.2 KDE 桌面
- KDE( K Desktop Environment )在 1996 年作為開源項目被發(fā)布
- KDE 會生成一個類似于 Windows 的圖形化桌面環(huán)境
1.1.3.3 GNOME 桌面
- GNOME( the GNU Network Object Model Environment )GNU 網(wǎng)絡(luò)對象模型環(huán)境,在 1999 年發(fā)布
- 現(xiàn)在已經(jīng)是大部分 Linux 發(fā)行版默認的桌面環(huán)境
- Red Hat Linux 大量采用該桌面環(huán)境
1.1.3.4 Unity 桌面
- 由 Ubuntu 自行研發(fā)的桌面環(huán)境
- 目標(biāo)是 為工作站、平板電腦以及移動設(shè)備提供一致的桌面體驗
- 就目前來說,平臺電腦和移動設(shè)備這塊已經(jīng)基本失敗了,主要還是缺乏生態(tài)
1.1.3.5 其他桌面
- 圖形化桌面環(huán)境的弊端在于,其 需要占用想當(dāng)一部分的系統(tǒng)資源 來保證運行正常,這和 Linux 誕生的初衷是相違背的
-
下圖是 Linux 上存在的一些其他圖形化桌面
Linux 上存在的一些其他圖形化桌面
1.2 Linux 發(fā)行版
- 發(fā)行版 —— 完成的 Linux 系統(tǒng)包
1.2.1 核心 Linux 發(fā)行版
- 包含內(nèi)核、一個或多個圖形化桌面環(huán)境以及預(yù)編譯好的幾乎所有能見到的 Linux 應(yīng)用
- 目標(biāo)是提供一站式的完整 Linux 安裝
-
下圖是 Linux 比較流行的核心發(fā)行版
Linux 比較流行的核心發(fā)行版
1.2.2 特定用途的 Linux 發(fā)行版
- 由于核心版體積龐大、配置繁瑣,導(dǎo)致安裝過程異常復(fù)雜,所以出現(xiàn)了針對特性場景使用的 Linux 發(fā)行版
-
下圖是 Linux 比較流行的特定用途發(fā)行版
Linux 比較流行的特定用途發(fā)行版
1.2.3 Linux LiveCD 樣本系統(tǒng)
- 可以在光驅(qū)中通過引導(dǎo)直接運行的 Linux 版本,不需要安裝就可以看到 Linux 的具體內(nèi)容
- 大部分特定用戶的 Linux 發(fā)行版都會推出 Linux LiveCD 版本
- 但由于是從光驅(qū)讀取的原因,該版本存在以下兩大缺陷:
- 受制于光驅(qū)的讀取速度,應(yīng)用程序運行起來比較慢
- 無法從光驅(qū)向 CD 寫入數(shù)據(jù),所以對系統(tǒng)做的任何修改再下一次加載時都會失效
-
下圖是 Linux 比較流行的 LiveCD 樣本系統(tǒng)
Linux 比較流行的 LiveCD 樣本系統(tǒng)
1.3 小結(jié)
- Linux 內(nèi)核是系統(tǒng)的核心,控制著內(nèi)存、程序和硬件之間的交互
- GNU 工具也是 Linux 系統(tǒng)中的一個重要部分
- 現(xiàn)在的 Linux 可以支持多種圖形化桌面環(huán)境
- Linux 發(fā)行版就是把 Linux 的不同部分匯集起來組成一個易于安裝的包









