Windows NT 架構
/ en-TEE /
每一個現代版本的 Windows——Windows 10、11 與 Windows Server——都建立在名為 Windows NT 的設計之上,它於 1990 年代初由 David Cutler(曾打造過更早的正規作業系統)主導建立。把它想成一家管理良好的公司:前線員工(應用程式)從不直接碰金庫或線路;他們向後勤辦公室提交申請,由後勤依嚴格規則實際執行。NT 從一開始就被設計得如此自律——安全、可靠、能跨不同 CPU 類型移植,並能執行為不同舊系統所寫的程式。
它的結構有幾個招牌部件。最底層是硬體抽象層(Hardware Abstraction Layer, HAL),一層薄薄的墊片,隱藏主機板與晶片之間的差異,讓核心其餘部分得以忽略它們。在小巧的核心之上是執行體(Executive),一組互相協作的管理元件——物件管理員、行程與執行緒管理員、記憶體管理員、輸入輸出管理員、安全參考監視器——它們在核心模式中共同提供真正的作業系統服務。最上層、位於使用者模式的,是環境子系統:最重要的是幾乎所有 Windows 程式都會交談的 Win32 子系統。NT 歷史上也曾提供其他「人格」(例如 POSIX/Unix 風格的子系統),這正是人們稱 NT 設計為「以子系統為基礎」的原因:同一個核心能呈現不只一種程式設計環境。
誠實的重點是:NT 通常被稱為混合核心(hybrid kernel)。它不是純粹的微核心——為了速度,圖形與檔案系統等大型子系統是在核心模式中執行,而非作為隔離的使用者模式伺服器——但它比經典的單核心 Unix 更多地借用了微核心「乾淨分離、特權核心小巧」的觀念。要說它是微核心還是單核心,部分是定義問題;實用的結論是:NT 刻意揉合兩種風格,以在可靠性與效能之間取得平衡。
一個 Windows 應用程式呼叫某函式來讀檔。這個呼叫經由 Win32 子系統進入執行體的輸入輸出管理員,後者把請求交給驅動程式;驅動程式只透過硬體抽象層與磁碟交談,於是確切的控制器晶片是什麼並不重要。應用程式從不知道這些層存在——它只是拿回了它要的位元組。
分層設計:應用程式到子系統、到執行體、到驅動程式、到 HAL、再到硬體。
別把 NT 核心版本和行銷名稱劃上等號。Windows 7、10 與 11 都以 NT 為基礎、共享同一套底層架構;消費端的數字和內部核心版本完全對不上。