总体结构
线上面的方框代表了用户的进程,线下面的组件是内核模式的操作系统。用户模式的线程在一个受保护的进程地址空间中执行,因此系统支持进程、服务进程、用户应用程序和环境子系统都有它们各自的私有进程地址空间。
1)系统支持进程(system support processes),比如登录(logon)进程和会话管理器(session manager),它们并不是WINDOWS的服务(不是由服务控制器来启动的)。
2)服务进程(service processes)宿纳(host)的是WINDOWS服务,比如任务调试器(Task Scheduler)和假脱机服务。WINDOWS的服务运行通常独立于用户登录。许多WINDOWS服务器应用,比如Microsoft SQL Server和Microsoft Exchange Server,也包含了一些以WINDOWS服务方式来运行的组件。
3)用户应用程序(user applications)有六种类型:Windows 32位、Windows 64位、Winows 3.1 16位、MS-DOS 16位、POSIX 32位或者OS/2 32位。
4)环境子系统服务器进程(environment subsystem server processer)实现了操作系统环境(environment)的支持部分。这时所谓的环境是指操作系统展示给用户或者程序员的个性化部分。Windows NT最初分布的时候带了三个不同的环境子系统:Windows、POSIX和OS/2。然而,OS/2最后一次发行是在Windows 2000中。到了Windows XP,在基本的产品中只有Windows子系统随产品一起发布。
子系统DLL:在Windows下,用户应用程序并不直接调用原始的Windows操作系统服务,相反,它们通过一个或者多个子系统动态链接库(DLLs)来发起调用。子系统DLL的角色是,将一个已文档化的函数转化为一些恰当的内部(通常是未文档化的)Windows系统服务调用。这个转化过程可能会——也可能不会——向正在为用户应用程序提供服务的环境子系统进程发送一个消息。
Windows的内核模式组件包含以下部分:
1)Windows执行体(executive)包含了基本的操作系统服务,比如内存管理、进程和线程管理、安全性、I/O、网络和跨进程通信。
2)Windows内核(kernel)是由一组低层次的操作系统功能构成,比如线程调试(thread scheduling)、中断(interrupt)和异常分支(exception dispatchig),以及多处理器同步。它也提供了一组例程和基本对象。执行体的其余部分利用这些例程和对象实现更高层次的功能。
3)设备驱动程序(device drivers)即包括硬件设备驱动程序,也包括文件系统和网络驱动程序。其中硬件设备驱动程序将用户的I/O函数调用转换成特定的硬件设备I/O请求。
4)硬件抽象层(HAL,Hardware Abstraction Layer)是指一层特殊的代码,它把内核、设备驱动程序和Windows执行体的其余部分,跟与平台相差的硬件差异(比如不同主板的差异)隔离开来。
5)窗口和图形系统(windowing and graphic system)实现了图形用户界面(GUI)函数(Windows USER和GDI函数),比如对窗口的处理、用户界面控件以及绘制等。
Windows的核心系统文件
文件名 | 组件 |
---|---|
Ntoskrnl.exe | 执行体和内核 |
Ntkrnlpa.exe(仅用于32位系统) | 执行体和内核,支持物理地址扩展(PAE),使得系统 可寻找多达64GB物理内存 |
Hal.dll | 硬件抽象层 |
Win32k.sys | Windows子系统的内核模式部分 |
Ntdll.dll | 内部支持函数,以及执行体函数的系统服务分发存根(stub) |
Kernel32.dll, Advapi32.dll, User32.dll, Gdi32.dll | Windows的核心子系统DLL |
Windows为何可以支持多种硬件体系结构和平台?主要通过以下两种方法实现可移植性:
1)分层设计,系统的底层部分是与处理器体系结构相关的,或者是与平台相差的,这些部分被隔离到独立的模块中,所以系统的高层部分可以不考虑体系结构之间的差别,也不用关心硬件平台上的差异。有两个关键的组件为操作系统提供了可移植性,内核(包含在Ntoskrnl.exe)和硬件抽象层(HAL,包含在hal.dll中)。
2)Windows绝大部分代码是用C语言编写,少部分是用C++编写的。只有需要直接与硬件进行通信的部分或对性能极端敏感的操作系统部分,才是用汇编语言编写。
客户和服务器版本之间的差异
1)所支持的处理器数目不同;
2)所支持的物理内存的数量不同;
3)所支持的并行网络连接的数量(例如,在客户版本中,最多允许同时连接10个文件和打印服务)不同;
4)Server版本随带的分层服务(layered services)并不包含在Professional版本中,例如目录服务(directory services)、集群服务(clustering)、以及对用户终端服务(Multiuser Terminal Services)的支持。