Windows NT体系结构

维基百科,自由的百科全书
跳转至: 导航搜索
Windows NT操作系统家族的体系结构,包括核心态与用户态两层,每层有多个模块。

Windows NT体系结构是分为用户态核心态两层的抢先式, 可重入的操作系统。可工作在单处理器或對稱多處理器(SMP)上。输入输出基于I/O请求包(I/O Request Packet, IRP)与异步I/O.

用户态下的程序与子系统仅能访问有访问权限的资源,核心态程序可以访问所有资源与外设。Windows NT的内核是一种混合内核。其体系结构包括简单内核, 硬體抽象層 (HAL), 驱动程序, 一些服务(总称为 执行体), 这些均属于核心态。[1]

Windows NT的用户态包括能够传递I/O请求给适当内核态下的的软件驱动程序的子系统。Windows NT的用户态包括了两个子系统:环境子系统(在不同操作系统类型下执行应用程序);集成子系统(Integral subsystem)执行一些系统相关的函数。

执行体提供了大部分的系统服务功能。位于硬件抽象层与执行体之间的Windows NT的核心态部分提供了多处理器同步, 线程与中断调度与分派, 自陷(trap)处理,异常分派。核心态还负责在启动时初始化驱动程序。核心态驱动程序分为三层:高层驱动程序,中层驱动程序,低层驱动程序。 Windows驱动程序模型(WDM)存在于中层驱动程序,主要用于二进制与源代码兼容于Windows 98Windows 2000的驱动程序。低层驱动程序或者是Windows NT的老的设备驱动程序,或者是PnP硬件总线。

用户态[编辑]

Windows NT操作系统的用户态部分包括两个子系统:环境子系统集成子系统.

环境子系统运行依据不同操作系统API而写的程序。有3个环境子系统:Win32子系统,OS/2子系统,POSIX子系统.[2]

  • Win32环境子系统运行32位Windows应用程序。还支持其他环境子系统的控制台或文本窗口,以及Virtual DOS Machine(VDMs)上执行MS-DOS与16位Windows程序。这通过模拟在Intel 80486上运行MS-DOS 5.0实现. Win32环境子系统进程(csrss.exe)还包含了窗口管理器以处理输入的键盘鼠标事件,应用程序根据Windows消息来绘制或刷新其窗口。
  • OS/2环境子系统模拟了OS/2 1.x,支持16位基于字符的OS/2应用程序。但不支持32位字符或图形的OS/2应用程序。[1] 运行OS/2 1.x的图形程序,需要安装Windows NT Add-On Subsystem for Presentation Manager。[2] 最后一个具有OS/2子系统的是Windows 2000; Windows XP不再有OS/2子系统.[3][4]
  • POSIX环境子系统支持严格遵照POSIX.1标准及相关ISO/IEC 标准写的程序. 这一子系统已经被Interix替代, 它是Windows Services for UNIX的一部分.[5]

集成子系统包括了安全子系统, 工作站服务服务器服务. 安全子系统处理安全令牌,基于资源许可授予或拒绝用户帐户访问,处理登录请求与初始化登录鉴别,以及管理Active Directory. 工作站服务子系统提供了计算机访问网络的功能。服务器子系统提供了网络服务功能。

核心态[编辑]

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

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

核心态的操作系统包含了由许多功能模块组成的执行体服务, 内核驱动程序, 一个(微)内核,一个硬件抽象层HAL.[3]

执行体[编辑]

Windows执行体服务建立于低层核心态程序之上,包含在文件NTOSKRNL.EXE中.[3] 负责处理I/O, 对象管理, 安全,进程管理. 划分为几个子系统, 包括缓存管理, 配置管理, I/O管理, 本地过程调用 (LPC), 内存管理, 对象管理, 进程结构安全引用监视(SRM). 这些子系统一起构成了 执行体服务. 系统服务,即系统调用也是在这一级别上实现,除了极少特例为了高性能而直接调用了内核层。

上下文中的术语"service"是指可调用的例程,或一整套可调用的例程。这不同于"服务进程(service process)"。服务进程是用户态下的程序,类似于类Unix系统守护进程

Object Manager
对象管理器是一个执行体的子系统,所有其他的执行体子系统,特别是系统调用必须通过它来获得对Windows NT资源的访问,这使得对象管理器成为资源管理的基础设施。[6] 对象管理器用来避免在其他子系统中管理资源带来的冗余与不安全。[7] 在对象管理器视角,每个资源都是一个对象,不论是物理资源(如文件系统或外设),还是逻辑资源(如一个互斥锁)。
缓存控制器
Windows Cache Manager与内存控制器、I/O控制器、I/O驱动一起为正常的文件I/O提供缓存. 这种文件缓存是针对文件块,对本地文件与远程文件提供了一致的服务。实际上这是特殊的文件内存映射。
配置管理器
实现了Windows 注册表.
I/O管理器
允许用户态程序与设备的通信。I/O管理器把用户态程序的读写请求翻译给硬件。例如,I/O管理器接收文件系统I/O请求,翻译为对相关设备的调用,与低层设备驱动程序合作执行硬件读写操作。还包括了I/O操作的cache管理。
本地过程调用(LPC)
提供了一种进程间通信端口机制。是Microsoft RPC的基础.
内存管理
管理虚拟内存, 控制内存保护,以及物理内存与二级存储之间的分页调度, 以及物理内存的分配. 还能分析PE格式可执行程序,以便映射入或卸载这些程序。
进程结构
处理进程线程的创建与终止,实现了作业概念(从Windows 2000开始).
即插即用管理器
处理即插即用,支持在启动时的设备检测与安装,按需停止或启动一个设备。它的大部分实际上是在用户态的 Plug and Play Service中实现。
电源管理
处理电源事件(关机, 睡眠stand-by, 休眠等),通知受影响的驱动程序。
安全引用监视(SRM)
强制实行安全规则的子系统.[8] 通过访问控制表 (ACLs)确定一个对象或资源可以被访问。访问控制表由访问控制条目(ACEs)组成. ACE包含了安全标识符 (SID)与授予的操作列表,使得用户帐户、用户组账号、登录会话[9]具有对资源的允许、不允许、审核(audit)等权限.[10][11]
GDI
图形设备接口是负责画线、字体绘制、处理调色板等。在Windows NT 3.x系列操作系统,GDI属于用户态。从Windows NT 4.0,GDI移入了核心态,以提高图形性能。[12]


Kernel[编辑]

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

核心态驱动[编辑]

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

硬件抽象层(HAL)[编辑]

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

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

参见[编辑]

进一步阅读[编辑]

  • 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)

注释与参考文献[编辑]

Notes
  1. ^ Finnel 2000,Chapter 1: Introduction to Microsoft Windows 2000, pp. 7–18.
  2. ^ Appendix D - Running Nonnative Applications in Windows 2000 Professional. Microsoft Windows 2000 Professional Resource Kit. Microsoft. 
  3. ^ 3.0 3.1 3.2 Roman, Steven. Windows Architecture. Win32 API Programming with Visual Basic. O'Reilly and Associates, Inc. 1999. ISBN 1-56592-631-5. 
  4. ^ MS Windows NT Kernel-mode User and GDI White Paper. Windows NT Workstation documentation. Microsoft TechNet. [2007-12-09]. (原始内容存档于15 December 2007). 
  5. ^ Chapter 28 - OS/2 Compatibility. Windows NT Workstation Resource Kit. Microsoft. [2009-01-18]. (原始内容存档于10 February 2009). 
  6. ^ Russinovich & Solomon 2005, pp. 124-125.
  7. ^ Russinovich 1997,Introduction.
  8. ^ Active Directory Data Storage. Microsoft. 
  9. ^ Trustee definition. MSDN. 
  10. ^ Siyan 2000.
  11. ^ ACE definition. MSDN. 
  12. ^ The Windows NT 4.0 Kernel mode change. MS Windows NT Kernel-mode User and GDI White Paper. Microsoft. [2009-01-19]. (原始内容存档于13 January 2009). 
  13. ^ Windows NT Hardware Abstraction Layer (HAL)
References

外部链接[编辑]