Mark Russinovich & David Solomon:windows Internals@2009 (第5版)

以下是從提供的資料中提取的主要論點及其詳細解釋:

Windows 核心設計與架構

資料詳盡闡述了 Windows 作業系統的內部結構與運作機制,核心論點圍繞在其多層次架構、物件導向設計理念、強大的資源管理、嚴謹的安全模型以及對現代硬體的支援等方面。

  1. 多層次架構與核心元件:

    • Windows 採用了微核心設計的改良版本,雖然部分核心服務(如記憶體管理、I/O 管理)執行在核心模式下,但系統將作業系統的主要功能劃分為多個層次和元件。最底層是硬體抽象層 (HAL),負責屏蔽不同硬體平台的差異。之上是 Kernel (核心),提供低階服務,如執行緒排程、中斷處理、同步機制。再往上是 Executive (執行器),包含作業系統的核心服務,如物件管理器、行程與執行緒管理器、記憶體管理器、I/O管理器、安全參考監視器等。最上層是環境子系統 (Environment Subsystems),如主要的 Windows 子系統,為應用程式提供 API 接口(如 Win32 API)。
    • 這種分層設計提高了系統的可移植性(特別是 HAL 和 Kernel)和模組化,使得在不同硬體上執行和引入新功能變得更加容易。
  2. 物件導向設計理念與物件管理器:

    • Windows 將系統資源(如檔案、行程、執行緒、同步物件、登錄機碼等)抽象為物件 (Objects)。每個物件都是特定物件類型的一個執行個體,由物件管理器 (Object Manager) 負責建立、刪除、命名、追蹤和保護。
    • 物件管理器提供了統一的機制來管理系統資源,並確保對這些資源的存取是安全的,透過控制清單 (ACL)安全描述符 (Security Descriptors) 來定義存取權限。物件透過控制代碼 (Handles) 被引用,每個行程都有自己的控制代碼表,指向其有權存取的物件。這種物件導向方法提高了系統的一致性和安全性。
  3. 強大的資源管理與排程:

    • Windows 支援多行程 (Processes)多執行緒 (Threads)作業 (Jobs)。行程是資源的容器(包含私有虛擬位址空間、控制代碼列表、安全上下文等),而執行緒是排程的基本單位(包含 CPU 狀態、堆疊、私有儲存區、唯一 ID)。作業物件允許將多個行程視為一個單位進行管理和限制資源使用。
    • 記憶體管理器 (Memory Manager) 提供了虛擬記憶體系統,每個行程擁有獨立的虛擬位址空間,並將虛擬位址對映到物理記憶體。它處理頁面錯誤、管理物理記憶體(透過 PFN 資料庫、工作集、待機列表、修改列表),並支援記憶體對映檔案、共享記憶體、寫入時複製 (Copy-on-Write) 和無執行頁面保護 (DEP)。
    • 快取管理器 (Cache Manager) 透過記憶體對映檔案與記憶體管理器協同工作,為檔案系統提供數據快取,支援預讀和延遲寫入以提高 I/O 效能。
    • 執行緒排程是基於優先順序的搶佔式排程 (Preemptive Scheduling)。核心根據執行緒的目前優先順序(內部有 0 到 31 級)來決定哪個執行緒可以執行。系統支援多處理器 (SMP)、超執行緒和 NUMA 架構,並有特定的演算法來優化這些環境下的排程。SuperFetch 技術透過分析歷史使用模式,主動將常用的頁面載入記憶體,提高系統和應用程式的啟動速度和反應性。
  4. 嚴謹的安全模型:

    • Windows 從設計之初就高度重視安全性,旨在滿足政府和行業的安全標準(如 C2 和 CC)。系統透過核心模式 (Kernel Mode)使用者模式 (User Mode) 的區分來保護作業系統核心數據不被使用者程式直接存取。
    • 安全模型基於安全識別符 (SIDs)存取令牌 (Access Tokens) 來識別使用者和行程的安全上下文。每次存取受保護的物件時,安全參考監視器 (SRM) 會根據物件的安全描述符 (Security Descriptors) 和請求存取的執行緒的存取令牌來執行存取檢查 (Access Checks)
    • Windows 支援自由存取控制(基於使用者/群組權限)、特權存取控制(允許某些帳戶繞過常規存取檢查)和強制完整性控制(基於完整性級別,防止低級別行程寫入高級別物件,用於 UAC、PMIE 等)。
    • 使用者帳戶控制 (UAC) 技術允許使用者以標準權限執行日常任務,只有在需要管理權限時才進行提示或需要提供憑據,並透過虛擬化 (Virtualization)提升 (Elevation) 來實現對舊應用程式的相容性。
    • 系統提供了安全稽核 (Security Auditing) 功能,記錄安全相關的事件,用於追蹤和分析未授權的存取嘗試或操作。
  5. I/O 系統與儲存管理:

    • I/O 系統的核心是 I/O 管理器 (I/O Manager),採用封包驅動模型,透過 I/O 請求封包 (IRP) 來標準化 I/O 操作。I/O 管理器協調應用程式、檔案系統驅動程式和設備驅動程式之間的互動。
    • Windows 支援分層的設備驅動程式模型(如 WDM 和 WDF),並提供即插即用 (Plug and Play) 和電源管理 (Power Management) 功能,使得設備的動態添加、移除、資源分配和電源狀態管理變得自動化。
    • 儲存管理涵蓋對磁碟、分區、卷的管理。系統支援基本磁碟和動態磁碟,後者提供跨越多個磁碟的卷(如跨區卷、鏡像卷、條帶卷、RAID-5 卷),並透過卷管理器 (Volume Manager) 來實現。
    • NTFS 檔案系統是 Windows 的原生檔案系統,具有高可靠性(基於事務記錄)、安全性(基於物件安全性)、大容量支援和多種高級功能(如壓縮、稀疏文件、硬鏈接、符號鏈接、事務性文件系統 (TxF)、配額、加密)。卷影複製服務 (VSS) 允許創建卷的快照副本,用於備份、系統還原和文件版本追蹤。BitLocker 提供了全卷加密功能,增強數據安全性。
  6. 網路架構與協定:

    • Windows 網路架構基於 OSI 參考模型,分為應用程式接口層、傳輸驅動層、NDIS 驅動層等。
    • 系統支援多種網路 API,如 Winsock(標準套接字接口)、Winsock Kernel (WSK,核心模式套接字)、RPC(遠端程序呼叫,用於分散式應用)、Web 存取 API、命名管道和郵槽(用於行程間通訊)、NetBIOS 等。
    • 網路協定驅動程式(如 TCP/IP 協定棧)負責實現底層通訊協定,並透過 NDIS 接口與網路適配器驅動程式通訊。NDIS 提供設備獨立的接口,簡化網路驅動開發。
  7. 系統啟動、關機與故障排除:

    • Windows 的啟動過程是一個多階段的序列,涉及 BIOS/EFI、MBR/GPT、Bootmgr、Winload、核心初始化、執行器初始化、服務載入、子系統啟動等步驟。
    • 系統提供了多種故障排除模式,如上次已知正確組態 (Last Known Good)安全模式 (Safe Mode)Windows 修復環境 (WinRE),用於在系統無法正常啟動時進行診斷和修復。
    • 崩潰傾印分析 (Crash Dump Analysis) 是診斷系統崩潰(藍屏)的重要工具。透過分析崩潰時的記憶體狀態,可以找出導致崩潰的驅動程式或系統元件。Driver Verifier 等工具能幫助捕獲難以重現的驅動程式錯誤。

總結來說,這些主要論點共同描繪了 Windows 作業系統作為一個複雜、多層次、安全且功能豐富的系統,其核心在於透過分層、物件化和標準化接口來管理硬體和軟體資源,同時提供穩定的執行環境、強大的排程和記憶體管理能力,以及針對企業和個人使用者的安全和管理功能。