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中的函數來實現其功能。