「學習 C/C++ 之前先學習什麼?」—— **計算機組成原理,特別是存儲器層次結構與 CPU 執行流程。** 這不是「了解」,是要「熟悉」到能畫出時序圖、算出地址映射。
| 模塊 | 必懂核心概念 | 對 C/C++ 影響 |
|---|---|---|
| 存儲器層次 | 寄存器 → L1/L2/L3 Cache → 主存 (DRAM) → 磁盤/SSD;局部性原理、緩存行(64B)、命中/缺失、預取、寫回/寫直達 | 數組遍歷順序、結構體字段排序、緩存友好算法、false sharing 避免 |
| 虛擬內存 | 頁表、多級頁表、TLB、頁面置換、內存映射文件、共享內存、交換空間 | malloc/免費堆管理、mmap、棧大小限制、段錯誤、內存洩漏檢測 |
| CPU 執行 | 取指-解碼-執行-訪存-寫回;流水線、超標量、亂序執行、分支預測、投機執行、SIMD、多核/超線程 | 編譯優化(-O2/3)、內聯、向量化、分支提示、原子指令、內存序 |
| I/O 系統 | 中斷、DMA、設備控制器、驅動模型、文件系統、網絡協議棧 | 文件讀寫、select/epoll/io_uring、串口/網絡編程、嵌入式外設驅動 |
**懂了「鐵」,寫代碼才有底氣。** C/C++ 是貼近硬體的語言,不知硬體原理,永遠只能當「API 調用工」。