Mark Russinovich & David Solomon:windows Internals@2005 (第4版)
Microsoft Windows Internals, Fourth Edition 主要論點詳盡解釋
本書《Microsoft Windows Internals, Fourth Edition》的核心宗旨是為進階的電腦專業人士(包括開發人員和系統管理員)提供關於 Microsoft Windows 2000、Windows XP 和 Windows Server 2003 作業系統核心組件內部運作機制的深入理解。透過揭示這些底層細節,本書旨在幫助讀者提升在特定 Windows 平台上的應用程式開發、系統效能分析和疑難排解能力。了解作業系統的「幕後」工作原理,能使專業人士更有效地使用系統資源、診控問題並最佳化效能。
本書的內容建基於 Windows NT 核心,並涵蓋了 Windows 2000、Windows XP(包含 32 位元與 64 位元版本)以及 Windows Server 2003(包含 32 位元與 64 位元版本)的核心變動與特性。這些版本在核心層面有高度的相似性,因此書中論述的絕大多數內容適用於所有這些版本,除非特別標明差異。
以下是從提供的文本中提取並詳細解釋的主要論點:
-
Windows 作業系統的演進與基礎
- 本書追溯了 Windows NT 核心自 1993 年首次發布 Windows NT 3.1 以來的發展歷程,經歷了 3.5、3.51、4.0 版本,並演進為 Windows 2000 (版本 5.0)、Windows XP (版本 5.1) 和 Windows Server 2003 (版本 5.2)。
- Windows NT 系列在設計之初便以取代 MS-DOS 和 16 位元 Windows 為目標,與 Windows 95 系列在架構上存在根本差異,例如對稱多處理 (SMP) 支援、NTFS 檔案系統的安全性、完整的 32 位元(現為 64 位元)核心、可重入性以及進程記憶體隔離等,這些特性共同構成了 Windows NT 核心更強大的穩定性、可靠性和安全性基礎。
-
Windows 核心架構與組件
- Windows 採用分層式架構,但本質上是一個單體式核心,意即作業系統的核心組件(如記憶體管理員、程序管理員、I/O 管理員等)執行在核心模式下的共享記憶體空間中。雖然這與典型的微核心架構不同,但 Windows 透過精心的設計和組件間的嚴謹介面調用,實現了高層級的強固性。
- 系統被明確劃分為使用者模式 (User Mode) 和核心模式 (Kernel Mode)。使用者模式執行應用程式程式碼和環境子系統,這些程式碼執行在受保護的獨立程序位址空間中。核心模式執行作業系統程式碼,擁有最高的特權等級,可以直接存取所有系統記憶體和硬體。這種分離是 Windows 安全性和穩定性的基礎。
-
核心組件:
- Executive: Windows 執行體,提供核心服務,包括物件管理員、記憶體管理員、程序和執行緒管理員、安全性參考監視器、I/O 管理員、即插即用 (PnP) 管理員、電源管理員、WMI 常式等。這些服務透過系統服務介面供使用者模式調用。
- Kernel: Windows 核心,提供低階、硬體相關的功能,如執行緒排程、中斷和例外處理、多處理器同步等。核心也提供一組基本的物件(核心物件)和常式供執行體使用。
- Hardware Abstraction Layer (HAL): 硬體抽象層,隔離核心和驅動程式與硬體平台的特定差異,增強系統的可攜性。
- Device Drivers: 裝置驅動程式,包括硬體驅動程式、檔案系統驅動程式、網路驅動程式等,負責管理硬體或提供特定檔案系統/網路功能。
- Windowing and Graphics System (Win32k.sys): 實現圖形使用者介面功能(USER 和 GDI),負責視窗管理、繪圖等。大部分此組件的程式碼執行在核心模式。
-
使用者模式組件:
- Environment Subsystems: 環境子系統,提供不同的作業系統環境(例如 Windows 子系統,Psxss 支援 POSIX),通過子系統 DLLs 為應用程式提供 API 接口。Windows 子系統 (Csrss.exe) 是最核心的子系統,負責主控 console 視窗、程序執行緒創建/刪除部分支援等。
- Subsystem DLLs: 子系統 DLLs(如 Kernel32.dll, User32.dll 等),提供使用者模式應用程式調用的 API 接口,並將其翻譯為對應的核心模式系統服務調用。
- System Processes: 系統程序,例如 Session Manager (Smss.exe)、Winlogon.exe、Service Control Manager (Services.exe) 和 Local Security Authority Subsystem (Lsass.exe) 等,它們在使用者模式下執行系統關鍵功能。
-
核心服務與機制
- 陷阱分發 (Trap Dispatching): 處理中斷 (Interrupts) 和例外 (Exceptions),中斷是非同步事件,例外是同步事件。中斷由硬體(如裝置中斷、時鐘中斷)或軟體(如 DPC, APC)產生,例外由指令執行引起(如記憶體違規、除以零)。
- 中斷請求級別 (IRQLs): Windows 內部的中斷優先級機制,更高 IRQL 的中斷會搶佔低於或等於其 IRQL 的執行,用於硬體中斷處理和核心模式同步。
- 延遲程序呼叫 (DPC) 和非同步程序呼叫 (APC): DPC 和 APC 是軟體中斷機制。DPC 在較低 IRQL 執行,用於處理裝置中斷的後續工作或排程等。APC 在特定執行緒上下文中執行,用於執行需要在特定程序位址空間內完成的核心工作。
- 系統服務分發 (System Service Dispatching): 應用程式從使用者模式切換到核心模式調用系統服務的機制。
- 物件管理員 (Object Manager): 負責創建、管理和刪除 Windows 執行體物件(如程序、執行緒、檔案、事件等),提供統一的資源存取、命名、共享和保護機制。
- 同步 (Synchronization): Windows 提供多種同步機制來協調多個執行緒或處理器對共享資源的存取,包括用於高 IRQL 同步的旋轉鎖定 (Spinlock) 和用於低 IRQL 同步的核心分發物件 (Dispatcher Objects)、快速互斥鎖 (Fast Mutexes) 等。
- 系統工作執行緒 (System Worker Threads): 執行體創建的特殊執行緒,用於處理需要在低 IRQL 執行的工作(如頁面寫回、預讀等),避免驅動程式或其他組件自行創建執行緒。
-
管理機制
- 註冊表 (Registry): 系統的中央資料庫,包含開機、硬體、軟體和使用者設定。它以階層式結構組織,並由配置管理員 (Configuration Manager) 負責維護。註冊表數據儲存在稱為「Hive」的檔案中,在系統運行時映射到記憶體。
- 服務 (Services): 在系統啟動時無需使用者登入即可執行的程式(類似於 UNIX Daemon),由服務控制管理員 (SCM) 負責啟動、停止和管理。服務通常在特定帳戶的安全上下文中執行。
- Windows Management Instrumentation (WMI): 一種基於業界標準 (WBEM) 的管理框架,允許應用程式和系統組件發布效能和配置資訊,並接收管理指令,便於本機及遠端系統管理。
-
啟動與關機程序
- 詳細描述 Windows 的開機過程,從 BIOS 載入 Boot Sector,Boot Sector 載入 Ntldr(或 IA64 的 Ia64ldr.efi),Ntldr 初始化核心並載入開機驅動程式,然後 Ntoskrnl 進行兩階段初始化,最後由 Smss 啟動使用者模式環境(Csrss, Winlogon 等),並由 SCM 啟動服務。
- 解釋如何通過修改 Boot.ini 檔案來影響開機行為,例如使用 /3GB、/PAE、/DEBUG 等參數。
- 介紹在開機過程中可能出現的問題及其故障排除方法,包括最後一次已知良好設定 (Last Known Good Configuration)、安全模式 (Safe Mode) 和修復主控台 (Recovery Console)。
- 描述系統的關機程序,包括通知應用程式和服務結束、卸載驅動程式等步驟。
-
核心組件的內部細節
- 詳細解釋程序 (Process) 的內部結構(EPROCESS, KPROCESS, PEB),程序創建的步驟流程。
- 詳細解釋執行緒 (Thread) 的內部結構(ETHREAD, KTHREAD, TEB),執行緒排程的原理(優先級、量子)、排程狀態機以及在單處理器和多處理器系統上的排程演算法。
- 詳細解釋虛擬記憶體管理器的內部結構和工作原理,包括位址翻譯(頁表、PDEs, PTEs)、頁錯誤處理、工作集管理、分頁檔案管理、系統記憶體池(分頁池、非分頁池)以及大型記憶體支援(如 AWE)。
- 詳細解釋安全性系統的內部組件(SRM, LSASS, SAM, Active Directory 等),物件保護機制(安全描述符、ACLs、ACEs)、存取檢查演算法、帳戶權利和特權、使用者登入過程以及軟體限制策略。
- 詳細解釋 I/O 系統的內部組件(I/O 管理員、PnP 管理員、電源管理員)、裝置驅動程式的類型、結構和載入過程、IRP 處理流程以及 I/O 完成埠等進階 I/O 機制。
- 詳細解釋儲存管理,包括基本磁碟和動態磁碟、MBR 和 GPT 分割區、磁碟驅動程式層次結構以及 LDM 捲冊管理。
- 詳細解釋快取管理員 (Cache Manager) 的運作原理,包括其與記憶體管理員的整合、資料快取機制、預讀和延遲寫入等。
- 詳細解釋檔案系統驅動程式的架構,以及 NTFS 檔案系統的內部結構(MFT、目錄結構、檔案記錄)、進階功能(如壓縮、稀疏檔案、日誌恢復、配額、加密、索引、硬連結等)及其實現原理。
- 簡要介紹網路架構、各種網路 API、協議驅動程式和 NDIS 驅動程式的實現。
-
故障排除與分析
- 強調使用 Regmon 和 Filemon 等工具診斷註冊表和檔案系統相關問題的技巧。
- 介紹系統崩潰(藍屏)的原因、藍屏訊息的含義,以及如何配置系統生成崩潰轉儲檔案。
- 詳細解釋如何使用核心偵錯器 (Kernel Debugger) 進行崩潰轉儲分析,包括基本分析步驟、檢查執行緒堆疊、識別可能的問題驅動程式,以及如何利用 Driver Verifier 等工具協助診斷。
-
未涵蓋的內容
- 書中明確指出不涵蓋所有 Windows 內部相關主題,例如 COM+、.NET Framework 的底層實現細節,也不涵蓋如何使用、程式設計或配置 Windows 的一般性指導,而是專注於核心系統組件的內部原理。
總之,本書透過對 Windows 核心組件進行深入的剖析,結合豐富的內部資料結構描述、演算法解釋以及實用的偵錯工具應用,為讀者提供了一份權威且詳盡的 Windows 內部指南,旨在幫助讀者真正理解 Windows 的運作方式及其背後的設計思想。書中的實驗部分鼓勵讀者動手實踐,透過實際操作來驗證和加深對內部機制的理解。同時,書中也對未公開介面的使用風險發出了警告。
comments
comments for this post are closed