Windows NT体系结构

Windows NT體系結構是指一系列微軟設計及製造,由Windows NT所衍生出的視窗作業系統架構,採用用戶模式與核心模式的分層設計。它是一种是搶佔式和可重入的操作系统,可運行在單處理器或對稱多處理器(SMP)上。並利用I/O請求包和異步I/O來處理所有的I/O請求。微软从Windows XP开始提供64位的Windows版本,之前只有32位版本。

用戶模式下的程式與子系統在它们可以访问的系统资源方面受到限制,而核心模式对系统资源和外部设备的访问不受限制,可以完全访问计算机的硬件和系统资源。Windows NT内核是屬於混合核心;其體系結構包括簡單內核、硬體抽象層(HAL)、驅動程式、服務(總稱為執行體),它们都存在于内核模式中。

构成Windows NT用戶模式的子系统可以透過I/O管理器傳遞I/O請求給核心模式中适当的驅動程式。Windows NT的用戶模式由環境子系統(執行為不同類型作業系統編寫的應用程式)和集成子系統(Integral subsystem,代表環境子系統執行特定系統的功能)组成。内核模式阻止用户模式的服务和应用程序访问它们不应访问的操作系统关键区域。

執行體與所有的用戶模式子系統處理I/O、对象管理、安全和进程管理。位於硬體抽象層與執行體之間的核心提供了多處理器同步、线程、中断调度和分派、故障處理和例外分派的功能。内核還負責在啟動時初始化设备驱动程序。内核模式驱动程序分為三個級別:高層驅動程式、中層驅動程式和低層驅動程式。Windows驅動程式模型(WDM)位於中層,主要設計為在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(Win16)程式的(VDMs),其中有一個VDM擁有專屬的位址空間,專門用來模擬在Intel 80486平台上運行的MS-DOS 5.0環境。Win32環境子系統行程(csrss.exe)還包含了視窗管理員以處理像是由鍵盤或滑鼠觸發的輸入事件(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。

POSIX環境子系統
POSIX環境子系統支持嚴格遵照POSIX.1標準及與ISO/IEC相關標準所寫的程式。這一子系統已經被替代,屬於Windows Services for UNIX的一部分。 伺服器服務則提供與網路服務相關的API。

核心模式
Windows NT的核心模式能访问所有硬件资源,在保护内存区上执行代码。 控制了调度、线程优先级、内存管理、硬件交互;禁止了用户态的程序与服务访问关键资源,用户态进程必须请求核心态执行这类操作。

x86硬件体系结构支持四种CPU优先级:0到3。仅有0与3这两种优先级被Windows操作系统使用。用户态程序运行在优先级3,核心态运行在优先级0(特权级别)。也分别称作「ring 3」与「ring 0」。这使得具有了只有2个优先级的RISC平台的可移植性。但是打破了OS/2应用程序包含的I/O特权段的兼容性

核心态的操作系统包含了由许多功能模块组成的执行体服务、内核驱动程序、一个(微)内核及一个硬件抽象层(HAL)。 通过访问控制表(ACLs)确定一个对象或资源可以被访问。访问控制表由访问控制条目(ACEs)组成。ACE包含了安全标识符(SID)与授予的操作列表,使得用户帐户、用户组账号、登录会话具有对资源的允许、不允许、审核(audit)等权限.

;GDI
:图形设备接口是负责画线、字体绘制、处理调色板等。在Windows NT 3.x系列操作系统,GDI属于用户态。从Windows NT 4.0,GDI移入了核心态,以提高图形性能。

內核
内核(kernel)在HAL与执行体之间,实际上是“微内核”的理念下设计实现出来的。负责多处理器同步,线程与中断的调度与分派,自陷处理,异常分派,在启动时初始化设备驱动程序等。

核心模式驱动
Windows NT使用核心态的设备驱动程序与硬件交互。用户态下的程序看到的设备都是I/O管理器下的文件对象;而I/O管理器自身看到的设备是设备对象。核心态驱动程序分为3个层次: 最高层驱动程序,中层驱动程序,低层驱动程序。最高层驱动程序,如FAT或NTFS的文件系统驱动程序,依赖于中层驱动程序。中层驱动程序由功能驱动(function driver)组成。功能驱动依赖于总线驱动,即服务于总线控制器、适配器(adapter)、桥(bridge)的驱动。Windows Driver Model (WDM)存在于中层。低层驱动直接控制硬件,不依赖于任何其他驱动程序。

硬件抽象层(HAL)
硬件抽象是一套软件子程序(routine),模拟了特定平台有关细节,使得程序不必直接访问硬件资源。因而可以写独立于设备的、高性能代码,通过操作系统访问硬件。 例如,编译器屏蔽了CPU指令集的细节,应用程序作者无需考虑与CPU相关的指令。操作系统的硬件抽象使得程序只需调用操作系统级的操作,而屏蔽了硬件具体细节,使得程序具有了可移植性。

操作系统的硬件抽象层位于硬件与软件之间。对操作系统内核隐藏了硬件的大部分差异,使得核心态代码基本不需要改变即可运行于不同硬件配置的计算机上。硬件抽象大都是硬件驱动程序。被屏蔽的硬件信息包括I/O界面、中断设置、多处理器通信机制等。

内核源码参考
可从下述渠道获得Windows内核的实现源码的参考:

  • ReactOS: 类Windows的开源操作系统,与Windows在 API级别兼容
  • wine:在非Windows系统上运行Win32程序的开源中间层,逻辑上与Windows在 API 级别兼容
  • Windows Research Kernel:Microsoft向高校和政府开放的用于研究的部分内核源码

参见
*Windows NT
*Windows系统库
*
*Linux內核
*
*
*用户模式驱动程序框架
*核心模式驱动程序框架
*ReactOS

延伸阅读

  • Martignetti, E.; What Makes It Page?: The Windows 7 (x64) Virtual Memory Manager (ISBN 978-1479114290)
  • Russinovich, Mark E.; Solomon, David A.; Ionescu, A.; Windows Internals, Part1: Covering Windows Server 2008 R2 and Windows 7 (ISBN 978-0735648739)
  • Russinovich, Mark E.; Solomon, David A.; Ionescu, A.; Windows Internals, Part2: Covering Windows Server 2008 R2 and Windows 7 (ISBN 978-0735665873)

注释与参考文献
;引用

;参考

*
*
*
*
*
*
*

外部链接
*[http://www.microsoft.com/windows2000/ Microsoft's official Windows 2000 site]
*[http://www.microsoft.com/technet/prodtechnol/windows2000pro/evaluate/featfunc/plugplay.mspx Windows 2000 Plug and Play architecture]
*[http://www.reactos.org/wiki/Techwiki:Memory_management_in_the_Windows_XP_kernel Memory management in the Windows XP kernel]

评论 (0)

  • 还没有评论,来抢沙发吧。