萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 系統架構全景解析:從硬體到應用的分層抽象

理解 Linux 架構是掌握作業系統運作的鑰匙。本文依循 **硬體 → 核心 → 系統呼叫 → 函式庫 → Shell/應用** 的分層模型,說明各層職責、介面與經典哲學,並附圖解說明資料流向。

架構分層總覽

┌─────────────────────────────────────┐
│  應用程式                            │  Firefox, Docker, Python, PostgreSQL...
│  ├─ 直接呼叫系統呼叫                  │
│  ├─ 透過函式庫                        │
│  └─ 執行 Shell 腳本                  │
├─────────────────────────────────────┤
│  Shell (bash, zsh, fish...)          │  命令解譯器、腳本語言、作業控制、管線/重導向
│  ├─ 內建指令                          │
│  └─ 启動外部程式                      │
├─────────────────────────────────────┤
│  函式庫                               │  glibc (POSIX/ISO C), libstdc++, OpenSSL...
│  ├─ 系統呼叫封裝                      │
│  └─ 高階抽象                          │
├─────────────────────────────────────┤
│  系統呼叫                             │  核心與用戶空間的唯一受控入口 (~300+)
│  ├─ 進程管理                          │
│  ├─ 記憶體管理                        │
│  ├─ 檔案系統                          │
│  ├─ 網路通訊                          │
│  └─ 裝置控制                          │
├─────────────────────────────────────┤
│  核心                                 │  進程排程、虛擬記憶體、VFS、網路協議棧、驅動程式
│  ├─ 進程/排程器                       │
│  ├─ 記憶體管理 (MM, Slab, Buddy)      │
│  ├─ VFS / 檔案系統                    │
│  ├─ 網路協議棧                        │
│  └─ 驅動模型                          │
├─────────────────────────────────────┤
│  硬體                                 │  CPU、記憶體、磁碟、網卡、GPU、外設...
└─────────────────────────────────────┘

核心層

  • **單體核心** 但模組化:make menuconfig 可裁剪模組。
  • 管理所有硬體資源,**用戶空間程式不可直接存取硬體**,必須透過系統呼叫。
  • 核心空間與用戶空間虛擬記憶體分離 (x86_64: 0~3GB 用戶, 3GB~4GB 核心)。

系統呼叫層

  • **最小功能單位**;如同漢字筆畫,所有上層功能皆由系統呼叫組合而成。
  • 查詢:man 2 syscalls 列出全部;man 2 read 查看 read() 細節。
  • 分類:man 2 intro 區分 1=指令, 2=系統呼叫, 3=函式庫...

函式庫層

  • 將繁瑣的系統呼叫序列封裝為高階 API (如 malloc() 取代 brk()+mmap();fopen() 處理緩衝)。
  • 標準:ISO C (glibc)、POSIX (pthread, realtime)、Linux 專有 (epoll, inotify)。
  • **不使用函式庫也可直接呼叫系統呼叫** (如 syscall(SYS_write, ...)),但極不建議。

Shell 層

  • **特殊應用程式**:命令解譯器、互動介面、腳本執行引擎。
  • 解析輸入:ls -l → 尋找 /bin/ls → fork()+execve() 執行。
  • 解譯 > (重導向)、| (管線)、& (後台)、$() (命令替換)。
  • **Unix 哲學**:小工具、單一功能、文字流介面、Shell 為膠水。
  • 常見 Shell:bash (GNU 預設)、zsh (擴充性強)、fish (開箱即用)、dash (腳本高效)。

終端機

  • 早期:實體終端機 (序列埠連接)。
  • 現代:終端機模擬器 (GNOME Terminal, Konsole, iTerm2, Windows Terminal) — 圖形視窗模擬字元介面,透過 PTY (偽終端) 與 Shell 通訊。

應用層

  • 可用 C/C++/Rust/Go/Python/Java/Node.js... 開發。
  • 三種呼叫路徑:直呼系統呼叫、呼叫函式庫、執行 Shell 腳本 (system(), popen())。

Linux 系統架構分層圖

Bash 終端機截圖

總結

  • 核心實現軟硬體對話,系統呼叫隱藏底層複雜度並提升可移植性。
  • 函式庫提供模組化功能,Shell 提供使用者介面與腳本整合能力。
  • 掌握分層模型,即能在除錯、效能調優、安全審計時精準定位問題層級。
copyright © 萬盛學電腦網 all rights reserved