可靠性 vs 可用性
- 可靠性:系統執行應用/服務時錯誤機率低
- 可用性:系統可服務時間長 (少維護/故障停機)
- 目標:極少失敗、失敗後快速恢復
三大架構改進支柱
支柱一:核心結構與記憶體防護
1. 核心模式寫保護 (Kernel Mode Write Protection)
- 實體記憶體頁面標記為唯讀/寫保護,含核心代碼區
- 防止核心元件互相破壞、惡意/錯誤驅動程式覆寫核心
- 預設啟用,開發者可關閉除錯
2. Windows 檔案保護 (WFP)
- 監控系統檔案 (
.sys, .dll, .ocx, .ttf, .fon, .exe) 版本與數位簽章
- 偵測到非授權取代 → 從
dllcache/網路安裝源/光碟自動還原
- 記錄事件日誌、提示使用者提供正確來源
- 僅允許 Service Pack/Hotfix/Windows Update/裝置管理員 合法替換
3. 驅動程式數位簽章
- WHQL 測試通過 → 附加加密數位簽章
- 安裝時三種策略:警告/封鎖/忽略 (預設:警告)
- 偵測簽章後被修改 → 警告使用者
支柱二:核心模式開發工具鏈
針對驅動程式開發者,解決共用記憶體錯誤難測問題:
- Pool Tagging:記憶體池標記追蹤配置/釋放
- Guard Pages:緩衝區邊界放置保護頁,捕捉溢位
- Driver Verifier:壓力測試驅動 (鎖檢查、IRQL、記憶體、同步等)
- Device Path Exerciser:自動化測試驅動各代碼路徑
支柱三:管理增強提升可用性
- 減少需重開機的維護操作 (動態系統設定變更)
- 加速關鍵診斷:Chkdsk、記憶體傾印報告大幅提速
- 縮短關機/開機時間:並行服務啟動、優化載入順序
- 緊急修復磁碟 (ERD) + 修復控制台 (RC) + 安全模式 三位一體修復體系
記憶體管理模型
- 4GB 虛擬位址空間:2GB 核心模式、2GB 使用者/核心共用
- VMM (虛擬記憶體管理器) + 頁面表 + 分頁檔
- Pool Tagging/Guard Pages 運作於核心記憶體池 (Nonpaged/Paged Pool)
核心 vs 使用者模式隔離
| 層面 | 核心模式 | 使用者模式 |
| 權限 | 存取所有硬體/系統資料 | 受限、無直接硬體存取 |
| 元件 | Executive、驅動程式、HAL、Microkernel | 應用程式、環境子系統、受保護子系統 |
| 錯誤影響 | 系統崩潰 (Bugcheck/BSOD) | 單一程序終止、不影響其他 |
| 隔離機制 | 寫保護、簽章、驗證工具 | 私有位址空間、受保護子系統 |
結語
Windows 2000 從架構底層重構可靠性:保護核心不受污染、給開發者找 Bug 的利器、讓管理員少重開機、快恢復。這套設計哲學延續至現代 Windows NT 核心 (含 Windows 10/11、Server 2022)。