Windows NT体系结构

title: 用户模式.
content: Windows NT操作系统的用户模式部分包括两个子系统:环境子系统与集成子系统。  环境子系统执行依据不同操作系统API而写的程序,有三个环境子系统:Win32子系统、OS/2子系统、POSIX子系统。  集成子系统包括安全子系统、工作站服务与服务器服务。安全子系统处理安全令牌,基于资源许可授予或拒绝用户账户访问,处理登入请求与初始化登入验证,以及管理Active Directory。工作站服务提供API给network redirector实作远端网络存取的功能。服务器服务则提供与网络服务相关的API。
title: 核心态.
content: Windows NT的核心态能访问所有硬件资源,在保护内存区上执行代码。 控制了调度、线程优先级、内存管理、硬件交互;禁止了用户态的程序与服务访问关键资源,用户态进程必须请求核心态执行这类操作。  x86硬件体系结构支持四种CPU优先级:0到3。仅有0与3这两种优先级被Windows操作系统使用。用户态程序运行在优先级3,核心态运行在优先级0(特权级别)。也分别称作「ring 3」与「ring 0」。这使得具有了只有2个优先级的RISC平台的可移植性。但是打破了OS/2应用程序包含的I/O特权段的兼容性  核心态的操作系统包含了由许多功能模块组成的执行体服务、内核驱动程序、一个(微)内核及一个硬件抽象层(HAL)。
title: 执行体.
content: Windows执行体服务建立于低层核心态程序之上,包含在文件NTOSKRNL.EXE中。 负责处理I/O、对象管理、安全、进程管理,划分为几个子系统, 包括缓存管理、配置管理、I/O管理、本地过程调用(LPC)、内存管理、对象管理、进程结构与安全引用监视(SRM)。这些子系统一起构成了执行体服务。系统服务,即系统调用也是在这一级别上实现,除了极少特例为了高性能而直接调用了内核层。  上下文中的术语「service」是指可调用的例程,或一整套可调用的例程。这不同于「服务进程」(service process)。服务进程是用户态下的程序,类似于类Unix系统的守护进程。
title: 内核.
content: 内核(kernel)在HAL与执行体之间,实际上是“微内核”的理念下设计实现出来的。负责多处理器同步,线程与中断的调度与分派,自陷处理,异常分派,在启动时初始化设备驱动程序等。
title: 核心态驱动.
content: Windows NT使用核心态的设备驱动程序与硬件交互。用户态下的程序看到的设备都是I/O管理器下的文件对象;而I/O管理器自身看到的设备是设备对象。核心态驱动程序分为3个层次: 最高层驱动程序,中层驱动程序,低层驱动程序。最高层驱动程序,如FAT或NTFS的文件系统驱动程序,依赖于中层驱动程序。中层驱动程序由功能驱动(function driver)组成。功能驱动依赖于总线驱动,即服务于总线控制器、适配器(adapter)、桥(bridge)的驱动。Windows Driver Model (WDM)存在于中层。低层驱动直接控制硬件,不依赖于任何其他驱动程序。
title: 硬件抽象层(HAL).
content: 硬件抽象是一套软件子程序(routine),模拟了特定平台有关细节,使得程序不必直接访问硬件资源。因而可以写独立于设备的、高性能代码,通过操作系统访问硬件。 例如,编译器屏蔽了CPU指令集的细节,应用程序作者无需考虑与CPU相关的指令。操作系统的硬件抽象使得程序只需调用操作系统级的操作,而屏蔽了硬件具体细节,使得程序具有了可移植性。  操作系统的硬件抽象层位于硬件与软件之间。对操作系统内核隐藏了硬件的大部分差异,使得核心态代码基本不需要改变即可运行于不同硬件配置的计算机上。硬件抽象大都是硬件驱动程序。被屏蔽的硬件信息包括I/O界面、中断设置、多处理器通信机制等。
title: 内核源码参考.
content: 可从下述渠道获得Windows内核的实现源码的参考:

Summary: Windows NT体系结构是指一系列微软设计及制造,由Windows NT所衍生出的视窗操作系统架构。Windows NT采用用户模式与核心模式的分层设计并且是抢占式和可重入的。可运行在单处理器或对称多处理器(SMP)上,并利用I/O请求包与异步I/O来处理所有的I/O请求。在Windows 2000(含)之前采用的Windows NT皆为32位元版本的,第一个基于IA-64的64位元Windows NT首先用于64位元的Windows XP,而第一个基于x86-64的64位Windows NT则为Windows Server 2003。

Architecture de la gamme d'OS Windows NT: Windows 2000, Windows XP et Windows Server 2003 font tous partie de la famille de systèmes d'exploitation Windows NT. Ce sont tous des systèmes d'exploitation préemptifs, réentrants conçus pour l'architecture x86 d'Intel, aussi bien monoprocesseur que SMP (multi-processeur symétrique). Pour traiter les requêtes d'entrées-sorties (I/O), ils utilisent des paquets de requête d'entrée/sortie (I/O request packets ou IRPs) et des I/O asynchrones. À partir de Windows XP, Microsoft a commencé à inclure le support des processeurs 64-bits dans ses systèmes — auparavant, ils étaient basés sur un modèle 32-bits. L'architecture du système d'exploitation Windows NT est fortement modulaire, et consiste en deux couches principales : un mode utilisateur et un mode noyau. Les programmes et sous-systèmes en mode utilisateur sont limités quant aux ressources auxquelles ils ont accès, tandis que le mode noyau a un accès illimité à la mémoire système et aux périphériques externes. Les noyaux des systèmes de cette famille sont connus en tant que noyaux hybrides, leur micronoyau étant essentiellement le noyau alors que les services de plus haut niveau sont implémentés par l'exécutif NT, qui existe aussi en mode noyau.