當前進度評估
已完成:C 語言程式設計、資料結構與演算法。
正在學習:作業系統(OS)。
作業系統核心知識體系
作業系統課程/教材通常 包含但不限於 以下領域,部分與組合語言、計組重疊:
- 進程管理:進程/執行緒模型、調度演算法、同步互斥(鎖、信號量、監視器)、死鎖。
- 記憶體管理:虛擬記憶體、分頁/分段、頁面置換算法、記憶體映射檔案。
- 檔案系統:目錄結構、索引節點、磁碟排程、日誌式檔案系統(ext4, NTFS, ZFS)。
- I/O 系統:設備驅動、中斷處理、DMA、塊/字元設備。
- 硬體抽象層:特權指令、系統呼叫、中斷/異常處理、CPU 模式切換——此部分需組合語言與計組基礎。
建議補充知識清單
- 計算機組成原理(必修):CPU 流水線、快取一致性、總線架構、記憶體階層 —— 理解 OS 為何如此設計的物理基礎。
- 組合語言 / 指令集架構(選修深度):x86-64 / ARMv8 基礎指令、函數呼叫慣例、系統呼叫執行流程 —— 閱讀 OS 核心碼(如 xv6, Linux kernel)的前置條件。
- 計算機網路:TCP/IP 協議堆疊、Socket 程式設計 —— 現代 OS 核心網路子系統的核心。
- 資料庫系統:關係模型、SQL、事務 ACID、B+ 樹索引、並發控制 —— 很多 OS 課程專案涉及簡易檔案系統/資料庫。
- 分散式系統(進階):CAP 定理、一致性協議(Raft, Paxos)、微服務架構 —— 現代雲原生 OS 的延伸。
實作導向學習路徑
- 閱讀《作業系統概念》(恐龍書)或《現代作業系統》(Tanenbaum)配合 xv6 教學核心 實驗。
- 完成 MIT 6.S081 / 6.828 公開課實驗(進程、系統呼叫、檔案系統、鎖)。
- 嘗試在 Linux 內核模組中實作簡易字元設備驅動。
- 閱讀《Linux 核心設計與實作》深入子系統原始碼。
總結
作業系統是計算機科學皇冠上的明珠,不需精通組合語言即可入門,但深入核心實作時必須補齊計組與組語基礎。建議「理論+實驗」雙軌並行,循序漸進。