Kernel 資料結構 (Kernel Data Structures)
備註
本系列文章內容參考自經典教材 Operating System Concepts, 10th Edition (Silberschatz, Galvin, Gagne)。本文對應章節:Section 1.9 Kernel Data Structures。
OS kernel 在實作各種演算法時,需要一套可靠的基礎資料結構 (Data Structures)。這些結構並非 OS 獨有的發明,而是電腦科學中通用的基石:串列、樹、雜湊表、位元映射。了解它們在 OS 中的使用方式,有助於理解 kernel 演算法的設計思維。更重要的是,這些資料結構會在後續章節(排程、記憶體管理、檔案系統等)中反覆出現,在進入具體的 OS 機制前先建立直觀理解,將大幅降低後續學習的認知負擔。
1.9.1 串列、堆疊與佇列 (Lists, Stacks, and Queues)
陣列的限制:為什麼需要串列?
陣列 (Array) 是最簡單的資料結構:每個元素可以直接透過索引存取,存取時間 O(1)。主記憶體本身就是一個大型陣列,每個 byte 都有對應的位址作為索引。若每個資料項目大小超過一個 byte,系統可以分配多個連續 byte 給它,並以「項目編號 × 項目大小 (item number × item size)」計算出位址,直接定位,這就是陣列快速存取的根本原因。
然而,陣列有兩個根本性的侷限:
- 大小必須固定且均一:陣列要求所有元素大小相同,且在記憶體中