用 Rust 學習系統軟體設計#
一本以 Rust 為工具,從編譯器、直譯器、JIT、虛擬機,一路做到作業系統與 Docker 容器的實作型教科書。
全書的核心命題是:系統軟體是一條由上而下的信任鏈——直譯器信任作業系統的記憶體,JIT 信任 CPU 的指令集,容器信任核心的 namespace。理解任何一層,最好的方式就是親手寫出那一層,而 Rust 是五十年來第一門能同時勝任「核心層」與「語言層」兩端工作的語言。
目錄#
- 第1章-導論:系統軟體的地圖
- 第2章-編譯器
- 第3章-直譯器
- 第4章-JIT
- 第5章-虛擬機
- 第6章-作業系統
- 第7章-Docker容器
環境需求#
- Linux x86-64(第 2、4、6、7 章的實驗需要 Linux;macOS 讀者建議使用虛擬機或容器)
- Rust 1.75 以上(
rustup update stable) - 第 6 章需要
qemu-system-x86_64;第 7 章需要 root 權限
全書地圖#
graph TD
A[第1章 語言與地圖] --> B[第2章 編譯器]
B --> C[第3章 直譯器]
C --> D[第4章 JIT]
C --> E[第5章 虛擬機]
E --> F[第6章 作業系統]
F --> G[第7章 容器]
B --> H[第2.3章 IR]
H --> D
E --> I[WASM/JVM]學習路線建議#
第 1–3 章是語言層(怎麼「跑起來」一段程式),第 4–5 章是執行層(怎麼「跑得快、跑得穩」),第 6–7 章是系統層(誰在底下撐住一切)。三層剛好對應 Rust 的三種用法:普通 cargo 專案、unsafe 與記憶體操作、以及 no_std 與裸機。
每一節的程式碼都可以直接放進一個 cargo new 出來的專案編譯執行。建議讀者邊讀邊打,遇到編譯錯誤時,把 Rustc 的錯誤訊息當作老師——它是本書最重要的助教。