Wednesday, August 31, 2011

Windows内核学习-2.1

1989年设计Windows NT的需求:
  • 真正32位抢先式(preemptive)、可重入(reentrant)、虚拟内存操作系统。
    • 抢先式:不需要请求协作,操作系统利用中断调度任务执行,所有进程都能获得CPU时间。
    • 可重入:可以安全并行执行,无静态/全局非常量数据,不返回静态/全局数据
  • 可运行在多种硬件体系结构和平台上
  • 可以在对称多处理器系统(SMP)上运行和扩展
  • 分布式计算平台,既可以作为服务器也可以作为客户端
  • 可以运行部分16位MS-DOS及Windows 3.1应用程序
  • 符合POSIX 1003.1
  • 符合政府和工业对操作系统安全性的要求
  • 支持Unicode,易于本地化
Windows NT的项目目标:
  • 可扩展(Extensibility)
  • 可移植(Portability)
  • 稳定性和鲁棒性(Reliability & Rebustness)
  • 兼容性(Compatibility)
  • 性能(Performance)
操作系统模型:
大部分操作系统会将应用程序与内核隔离。
Windows和大多数Unix系统一样,是单一整体操作系统,操作系统代码和设备驱动共享同一块内核模式下受保护的内存空间。
Windows不是基于微内核的系统。纯微内核系统的主要操作系统组件在各自独立隔离的私有地址空间中运行,其余均在用户模式下运行。纯微内核系统的效率不高。
所有操作系统组件受保护,应用程序无法直接访问。
Windows的内核组件包含了面向对象的设计思想,但严格来说并非面向对象的系统。大部分系统代码由C写成,便于移植,其对象的实现借用了面向对象编程语言中的一些特性来实现。

Windows体系结构:


四种用户模式进程:
  • 固定的系统支持进程,非Windows服务。登陆管理、会话管理等。
  • 服务进程和主机Windows服务。任务调度、打印等,与用户登陆独立的服务。
  • 用户应用程序
  • 环境子系统服务器进程。windows子系统,POSIX子系统,OS/2子系统。
Windows内核模式组件:

  • 执行体(Executive): 基本操作系统服务。内存管理,进程管理,安全,I/O,网络。
  • 内核(Kernel): 低层操作系统功能。线程调度,中断,多处理器同步。
  • 设备驱动(Device Driver): 硬件设备驱动。文件系统,网络驱动。
  • 窗口和图形系统(windowing and graphics system): 图形用户界面GUI。
核心Windows系统文件:
  • Ntoskrnl.exe, 执行体和内核
  • Ntkrnlpa.exe, 仅在32位系统中存在。带物理地址扩展PAE支持的执行体和内核
  • Hal.dll, 硬件抽象层HAL(hardware abstraction layer)
  • Win32k.sys, windows子系统的内核模式部分
  • Ntdll.dll, 内部支持函数和系统服务,向可执行函数传递消息
  • Kernel32.dll, Advapi32.dll, User32.dll, Gdi32.dll,核心Windows子系统DLL
可移植性(Portability):
Windows被设计在可以运行于多种硬件体系结构之上,包括CISC和RISC。
Windows NT支持x86和MIPS,然后加入了对Alpha AXP的支持。
Windows NT 3.51开始支持PowerPC。
Windows 2000开始取消了对MIPS和PowerPC的支持,然后取消了对Alpha AXP的支持。
最新的Windows 2000,Windows XP, Windows Server 2003仅支持x86体系结构,以及对Intel Itanium IA-64, AMD x86-64, Intel 64-bit Extension Technology (EM64T)三种64位处理器的支持。

Windows通过两种主要方式实现多平台的可移植性:
  • 分层设计。系统的低层部分、处理器体系结构相关和平台相关的部分被分成多个独立的模块,使得上层系统可以不受这种处理器差异和体系结构差异的影响。提供可移植性的两个核心组件是kernel(包含在ntoskrnl.exe中)和HAL(包含在Hal.dll中)。体系结构相关的函数在kernel中实现。同意体系结构下系统相关的函数在HAL中实现。除此之外,内存管理也属于体系结构相关的组件,但与系统整体相比只是一小部分。
  • windows系统大部分由C编写而成,少部分为C++。直接与系统硬件通讯或者明显影响系统性能的部分由汇编语言编写,系统各个部分都可能存在由汇编语言编写的代码。
对称式多处理(SMP, symmetric multiprocessing):
Windows是SMP系统,此外还有非对称处理(ASMP, assymmetric multiprocessing)。

Windows XP和Windows Server 2003支持两种新的SMP系统,超线程(hyperthreading)和非一致性内存结构(NUMA, non-uniform memory architecure).
  • Hyperthreading, 由Intel提出。在一个物理处理器上模拟多个逻辑处理器,所有逻辑处理器都有各自的CPU状态,但共享执行引擎和cache,一个逻辑处理器可以在其他逻辑处理器忙碌时继续工作。Windows XP的调度算法使得系统可以对多处理器超线程机器更好地工作。
  • NUMA, 处理器被分为成为节点(node)的组,每个节点有自己的处理器和内存,并且通过缓存一直的互联总线连接到更大的系统上。NUMA系统上的Windows仍然作为一个SMP系统,所有处理器都可以访问所有内存,但访问所在节点上的内存比访问其他节点上的内存更快。系统会尽量调度处在同一节点上的内存和处理器给线程使用。
Windows最多支持32个处理器(64位支持最多64个),但这只是受字长使用方便的限制,而非Windows设计上的限制。保存在:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Licensed Processors
Windows 2000各版本支持的处理器、物理内存差别:
Edition
Number of Processors Supported
Physical Memory Supported
Windows 2000 Professional
2
4 GB
Windows 2000 Server
4
4 GB
Windows 2000 Advanced Server
8
8 GB
Windows 2000 Datacenter Server
32
64 GB


由于性能原因,kernel和HAL在单处理器系统、多处理器系统上的文件有所不同。Windows 2000有6个不同文件,Windows XP和Windows Server 2003有3个不同文件。64位系统上没有PAE的区别,只有单处理器、多处理的差异:
Name of File on System Disk
Name of Uniprocessor Version on Distribution Media
Name of Multiprocessor Version on Distribution Media
Ntoskrnl.exe
Ntoskrnl.exe
Ntkrnlmp.exe
Ntkrnlpa.exe (PAE kernel; 32-bit systems only)
Ntkrnlpa.exe in \Windows\<arch>\Driver.cab
Ntkrpamp.exe in \Windows\<arch>\Driver.cab
Hal.dll
Depends on system type
Depends on system type
(Windows 2000 only)
Win32k.sys
\I386\UNIPROC\Win32k.sys
Win32k.sys in \I386\Driver.cab
Ntdll.dll
\I386\UNIPROC\Ntdll.dll
\I386\Ntdll.dll
Kernel32.dll
\I386\UNIPROC\Kernel32.dll
\I386\Kernel32.dll
HAL在个系统上的差异:
HAL File Name
Systems Supported
Hal.dll
Standard PCs
Halacpi.dll
Advanced Configuration and Power Interface (ACPI) PCs
Halapic.dll
Advanced Programmable Interrupt Controller (APIC) PCs
Halaacpi.dll
APIC ACPI PCs
Halmps.dll
Multiprocessor PCs
Halmacpi.dll
Multiprocessor ACPI PCs
Halborg.dll
Silicon Graphics Workstation (Windows 2000 only; platform no longer marketed)
Halsp.dll
Compaq SystemPro (Windows XP only)

No comments:

Post a Comment