Windows Programming/Windows系統架構

維基教科書,自由的教學讀本

歷史[編輯]

Windows最初是在MS-DOS之上的16位圖形外層,這包括了Windows 1.0, 2.0, 3.11。Windows NT開始完全使用NT內核成為32位系統。Windows 95開始,Microsoft開始去除對DOS的依賴最終到Windows 2000徹底去除DOS。

Windows內核[編輯]

Windows 1.0、2.0和3.11常被認為是上一代的Windows,因為它們只是在MS-DOS系統上層堆起了簡單的圖形用戶界面。Windows 95、Windows 98與Windows ME在設計上都繞過MS-DOS(即便DOS仍舊存在),而是基於同一組被稱為"9x Kernel"的代碼結構。至於Windows NT 4.0、Windows 2000、Windows XP、Windows Vista、Windows 7,還有Windows Server系列,則基於一組名為"NT Kernel"的代碼。

系統架構[編輯]

Windows NT Kernel最底層是文件NTOSKRNL.EXE, 存放在C:\Windows\System32目錄下。NTOSKRNL依賴於HAL.DLL,"Hardware Abstraction Layer",提供了底層機制如中斷、BIOS通信。

底層之上是NTDLL.DLL, WIN32K.SYS。NTDLL包含了很多用戶模式下的函數,包括系統調用stub與運行時庫(run-time library, RTL)代碼,統稱為 "Native API",通常是未公開。WIN32K.SYS是內核模式驅動,實現了窗口與圖形。

更上一層是許多庫,稱為Win32 API,主要4個.DLL是:

kernel32.DLL:包含與操作系統相關的Win32 API函數。僅是底層NTDLL函數的wrapper。但一些功能如National Language Support (NLS)與console handling是NTDLL所沒有的。
advapi32.DLL:包含其他與操作系統相關的函數如registry與service handling。
gdi32.DLL:包含畫圖相關函數。
user32.DLL:包含許多實現用戶接口、程序、消息框、prompts等等。User32調用WIN32K.SYS中的函數來實現其功能。