Windows NT體系結構

Windows NT體系結構是指一系列微軟設計及製造，由Windows NT所衍生出的視窗作業系統架構，採用使用者模式與核心模式的分層設計。它是一種是搶佔式和可重入的作業系統，可執行在單處理器或對稱多處理器上。並利用I/O請求包和非同步I/O來處理所有的I/O請求。微軟從Windows XP開始提供64位的Windows版本，之前只有32位版本。使用者模式下的程式與子系統在它們可以訪問的系統資源方面受到限制，而核心模式對系統資源和外部裝置的訪問不受限制，可以完全訪問計算機的硬體和系統資源。Windows NT核心是屬於混合核心；其體系結構包括簡單核心、硬體抽象層，它們都存在於核心模式中。構成Windows NT使用者模式的子系統可以透過I/O管理器傳遞I/O請求給核心模式中適當的驅動程式。Windows NT的使用者模式由環境子系統組成。核心模式阻止使用者模式的服務和應用程式訪問它們不應訪問的作業系統關鍵區域。執行體與所有的使用者模式子系統處理I/O、物件管理、安全和程序管理。位於硬體抽象層與執行體之間的核心提供了多處理器同步、執行緒、中斷排程和分派、故障處理和例外分派的功能。核心還負責在啟動時初始化裝置驅動程式。核心模式驅動程式分為三個級別：高層驅動程式、中層驅動程式和低層驅動程式。Windows驅動程式模型位於中層，主要設計為在Windows 98與Windows 2000之間實現二進位檔與原始碼相容。最底層的驅動程式要麼是直接控制裝置的舊版Windows NT裝置驅動程式，要麼是即插即用硬體匯流排。使用者模式.Windows NT作業系統的使用者模式部分包括兩個子系統：環境子系統與整合子系統。環境子系統執行依據不同作業系統API而寫的程式，有三個環境子系統：Win32子系統、OS/2子系統、POSIX子系統。Win32環境子系統.Win32環境子系統可執行32位元的Windows應用程式，並為其他環境子系統提供具備純文字介面、關閉以及硬體錯誤(hard error)管理的主控臺介面(console)，以及支援讓Windows NT執行MS-DOS與16位元Windows還包含了視窗管理員以處理像是由鍵盤或滑鼠觸發的輸入事件(event)，並將事件訊息(message)傳送至等待輸入回應的應用程式，應用程式則根據事件訊息作出相應的動作，例如繪制或重新整理其視窗。OS/2環境子系統.OS/2環境子系統支援基於文字介面的16位元OS/2應用程式，或虛擬出來的OS/2 1.x。但執行在x86平臺上OS/2 2.x及之後的非32位元或圖形化OS/2應用程式則不被支援。若要執行圖形化的OS/2 1.x程式，則需要安裝Windows NT Add-On Subsystem for Presentation Manager。 最後一個具有OS/2子系統的是Windows 2000，從Windows XP開始則不再包含，但可透過在Windows XP上安裝Microsoft Virtual PC 2004取得OS/2程式的執行環境。POSIX環境子系統.POSIX環境子系統支援嚴格遵照POSIX.1標準及與ISO/IEC相關標準所寫的程式。這一子系統已經被替代，屬於Windows Services for UNIX的一部分。整合子系統包括安全子系統、工作站服務與伺服器服務。安全子系統處理安全令牌，基於資源許可授予或拒絕使用者帳戶訪問，處理登入請求與初始化登入驗證，以及管理Active Directory。工作站服務提供API給實作遠端網路存取的功能。伺服器服務則提供與網路服務相關的API。核心模式.Windows NT的核心模式能訪問所有硬體資源，在保護記憶體區上執行程式碼。 控制了排程、執行緒優先順序、記憶體管理、硬體互動；禁止了使用者態的程式與服務訪問關鍵資源，使用者態程序必須請求核心態執行這類操作。x86硬體體系結構支援四種CPU優先順序：0到3。僅有0與3這兩種優先順序被Windows作業系統使用。使用者態程式執行在優先順序3，核心態執行在優先順序0。也分別稱作「ring 3」與「ring 0」。這使得具有了只有2個優先順序的RISC平臺的可移植性。但是打破了OS/2應用程式包含的I/O特權段的相容性核心態的作業系統包含了由許多功能模組組成的執行體服務、核心驅動程式、一個。執行體.Windows執行體服務建立於低層核心態程式之上，包含在檔案NTOSKRNL.EXE中。 負責處理I/O、物件管理、安全、程序管理，劃分為幾個子系統, 包括快取管理、配置管理、I/O管理、本地過程呼叫。這些子系統一起構成了執行體服務。系統服務，即系統呼叫也是在這一級別上實現，除了極少特例為了高效能而直接呼叫了核心層。上下文中的術語「service」是指可呼叫的例程，或一整套可呼叫的例程。這不同於「服務程序」。服務程序是使用者態下的程式，類似於類Unix系統的守護程序。物件管理器是一個執行體的子系統，所有其他的執行體子系統，特別是系統呼叫必須透過它來獲得對Windows NT資源的訪問，這使得物件管理器成為資源管理的基礎設施。 物件管理器用來避免在其他子系統中管理資源帶來的冗餘與不安全。 在物件管理器視角，每個資源都是一個物件，不論是物理資源。Windows Cache Manager與記憶體控制器、I/O控制器、I/O驅動一起為正常的檔案I/O提供快取。這種檔案快取是針對檔案塊，對本地檔案與遠端檔案提供了一致的服務。實際上這是特殊的檔案記憶體對映。實現了Windows登錄檔所需的系統呼叫。允許使用者態程式與裝置的通訊。I/O管理器把使用者態程式的讀寫請求翻譯給硬體。例如，I/O管理器接收檔案系統I/O請求，翻譯為對相關裝置的呼叫，與低層裝置驅動程式合作執行硬體讀寫操作。還包括了I/O操作的cache管理。提供了一種程序間通訊埠機制。是的基礎。管理虛擬記憶體, 控制記憶體保護，以及物理記憶體與二級儲存之間的分頁排程, 以及物理記憶體的分配。還能分析PE格式可執行程式，以便對映入或解除安裝這些程式。處理程序與執行緒的建立與終止，實現了作業概念。處理即插即用，支援在啟動時的裝置檢測與安裝，按需停止或啟動一個裝置。它的大部分實際上是在使用者態的 「Plug and Play」服務中實現。處理電源事件，通知受影響的驅動程式。強制實行安全規則的子系統。 透過訪問控制表等許可權.圖形裝置介面是負責畫線、字型繪製、處理調色盤等。在Windows NT 3.x系列作業系統，GDI屬於使用者態。從Windows NT 4.0，GDI移入了核心態，以提高圖形效能。核心.核心在HAL與執行體之間，實際上是“微核心”的理念下設計實現出來的。負責多處理器同步，執行緒與中斷的排程與分派，自陷處理，異常分派，在啟動時初始化裝置驅動程式等。核心模式驅動.Windows NT使用核心態的裝置驅動程式與硬體互動。使用者態下的程式看到的裝置都是I/O管理器下的檔案物件；而I/O管理器自身看到的裝置是裝置物件。核心態驅動程式分為3個層次： 最高層驅動程式，中層驅動程式，低層驅動程式。最高層驅動程式，如FAT或NTFS的檔案系統驅動程式，依賴於中層驅動程式。中層驅動程式由功能驅動的驅動。Windows Driver Model (WDM)存在於中層。低層驅動直接控制硬體，不依賴於任何其他驅動程式。硬體抽象層.硬體抽象是一套軟體子程式，模擬了特定平臺有關細節，使得程式不必直接訪問硬體資源。因而可以寫獨立於裝置的、高效能程式碼，透過作業系統訪問硬體。 例如，編譯器遮蔽了CPU指令集的細節，應用程式作者無需考慮與CPU相關的指令。作業系統的硬體抽象使得程式只需呼叫作業系統級的操作，而遮蔽了硬體具體細節，使得程式具有了可移植性。作業系統的硬體抽象層位於硬體與軟體之間。對作業系統核心隱藏了硬體的大部分差異，使得核心態程式碼基本不需要改變即可運行於不同硬體配置的計算機上。硬體抽象大都是硬體驅動程式。被遮蔽的硬體資訊包括I/O介面、中斷設定、多處理器通訊機制等。核心原始碼參考.可從下述渠道獲得Windows核心的實現原始碼的參考：註釋與