• 沒有找到結果。

Window Server 经过多年的发展已经从最初功能十分有限的 32 位操作系统演化成了现在 的界面友好、管理方便、功能强大的操作系统家族,它之所以有这样大的发展,除了微软强 大的商业推动力量之外,Windows Server 本身的技术因素也是重要的原因,尤其是它自身的体 系结构所具有的可扩充性、可执行性、健壮性、兼容性和高效性,正是这些特性让 Windows Server 2003 不断得以进步。

1.5.1 Windows Server 2003 结构纵览

在讨论 Windows Server 2003 结构时,有两个词需要牢记:模块化和客户/服务器。

模块的意思是它内部分成许多小而独立的单元,每个单元的任务明确,定义清晰,模块 化是计算机编程追求的目标之一,操作系统也不例外。模块化代码更易于维护,因为它意图 清楚,并且整个代码段可被取代,而对要调用它的所有其他子程序不产生影响。

模块设计的概念与早期操作系统用到的分立设计方法相反。在分立设计中,操作系统运 行在特许处理器模式下,代码块提供多个功能,但缺乏清晰分工,这样虽然可以取得更小、

更紧凑的代码,但整个系统可移植性变差。

当人们听说 Windows Server 2003 是客户/服务器方式的操作系统时,他们通常认为这是指 Windows Server 2003 可用于客户/服务器数据库,或可用作网络系统。尽管 Windows Server 2003 是当作这种应用的明智选择,但从 Windows Server 2003 的结构来看,则并不确切,真正的含 义是指 Windows Server 2003 内部的各部分是以客户/服务器方式来进行通信的。说的更为规范 些,是指 Windows Server 2003 的模块成员是按照客户/服务器方式来设计开发的,如图 1-7 所 示。当其中某一个小块代码有需求时,它是作为客户的;而能满足该需求的代码则是服务器。

譬如要求在屏幕上画一幅图的用户程序就是个客户,它利用定义明确的消息向另一段代码发 出请求(在本例中可能是指 Win32 子系统)要求画图,此时 Win32 子系统就是服务器——这

样构成了客户/服务器。

图 1-7 客户/服务器操作系统的设计方案

1.5.2 用户模式与内核模式的比较

Windows Server 2003 与当今先进的操作系统一样,采用将操作系统任务多级化的处理方 案,这一点是和微处理器支持的实际模式相联系的。现在大多数微处理器支持的多重模式(有 时称为环)程序就在其间运行。这些模式给运行在其中的程序不同级别的特许权访问硬件,

并让其他一些程序在系统中运行。Windows Server 2003 采用特许模式和非特许模式,即通常 所说的内核模式和用户模式。运行在内核模式下的程序可直接访问硬件和系统中的软件资源。

在 Windows Server 2003 中只有操作系统的关键片段才允许在内核模式下运行,这样做是为了 保证系统的安全性和可靠性。Windows Server 2003 的内核包括微内核、硬件抽象层及设备驱 动程序,是 Windows Server 2003 中惟一能在微处理器特许内核模式下运行的部件。

所有不运行在内核模式下的程序都运行在用户模式下。大部分 Windows Server 2003 代码 以用户模式运行,包括环境子系统(如 Win32 子系统和 POSIX 子系统)和所有用户应用程序。

这些程序只能访问它们自己的 32 位地址和与系统其他部分的接口。这一切都是通过客户/服务 器实现的,这将在以后介绍。

对于 Windows Server 2003,设计者尽可能地使操作系统运行在用户模式下,这样有助于 确保系统可靠性和安全性。与此同时,当他们需要对基本部件修改时,也会变得简单。

1.5.3 Windows Server 2003 结构部件

为理解 Windows Server 2003 如何运行,以及为何如此运行,观察一下操作系统不同成分 及其接口是十分重要的。如今已对 Windows Server 2003 有了一些了解,让我们在深入一层进 行了解。图 1-8 显示了 Windows Server 2003 中各关键层及其逻辑联系。

Windows Server 2003 结构中的 4 个重要组成部分是:硬件抽象层(HAL)、微内核、Windows Server 2003 执行体、环境子系统。模块中的每一部分各司其职,Windows Server 2003 也就借此运行。

1.5.3.1 硬件抽象层

硬件抽象层(HAL)是硬件与操作系统其余部分的一个软件接口,它通过动态链接库

(DLL)实现,并负责屏蔽掉硬件特征对 Windows Server 2003 其余部分的影响,如中断控制 客户应用

程序

显示 内存和 I/O

管理 文件系统 网络

内核

用户模式 内核模式

和 I/O 接口。这种抽象使 Windows Server 2003 更易于移植,因为此时操作系统其余部分不必 再关心它所处的硬件平台是什么了。每个运行 Windows Server 2003 的硬件平台要有一特定的 HAL。这样设计的好处是,当 Windows Server 2003 移植到一种新型处理器结构上时,只需重 新为该新型处理器编写 HAL,而其余部分不需进行重新编译。这使 Windows Server 2003 的移 植极为容易。

图 1-8 Windows Server 2003 中各关键层及其逻辑联系

HAL 还提供了对称多处理(SMP)接口。Windows Server 2003 为每种处理器结构(Intel、

MIPS、Power PC 和 Alpha)都提供了两种 HAL,第 1 种 HAL 用于支持单个处理器;而第 2 种 HAL 用于支持多达 4 个处理器。硬件销售商还可提供其他的 HAL,实现对 Windows Server 2003 多达 32 个处理器的支持。

对计算机中每个实际的处理器,HAL 提供给微内核一个虚拟处理器,借此将处理器所有 的特殊特征隐藏起来,从而使得各个处理器对操作系统来说并无区别。举例来说,如果有两 套多处理器系统,其中之一是用 Intel Pentium 处理器;另一套是用 DEC Alpha AXP 处理器,

虽然每套系统上的 HAL 可能不同,但 HAL 提供给微内核的虚拟处理器则是完全一样的。在 SMP 系统中,HAL 为每个物理处理器向微内核提供一个虚拟处理器,再由微内核将其等效为 有 3 个处理器的 Intel Pentium 系统。

尽管 HAL 尽量减少硬件依赖性而提高 Windows Server 2003 的可移植性,事实上并不那么 简单! Windows Server 2003 设计师们将其对硬件依赖性降至最低这一努力,在将 TVT 移植到 新的平台所需的时间与精力已大为减少。(注:在 Windows Server 2003 最初开发阶段,所有初 始代码是按 Intel 的 I860 RISC 芯片而写的。然而由于 Intel 对该芯片支持减小,及其开发过程

硬件

硬件抽象层(HAL)

微内核 设备驱动程序 执行体

用户应用程序

Win32 子系统

Win32 子系统 OS/2 子系统

用户模式 内核模式

图形引擎

中遇到的设计问题而放弃了该芯片,而将开发重新转移到 MIPS 芯片。这也是 Windows Server 2003 操作系统良好移植性的有力证明)。

HAL 只能由 Server 2003 执行体直接访问,而用户程序永远无法直接进行调用。同时 HAL 也是 Windows Server 2003 系统中惟一被允许直接与硬件打交道的软件。这样做的好处是破坏 性程序无法向硬件进行有意或无意的信息写入,从而避免了系统冲突;同时禁止直接从硬件 读取信息,将有助于支持 Windows Server 2003 的安全模式。

尽管 Windows Server 2003 的目标是让所有的与硬件有关的调用都通过 HAL,但事实是少 量的设备驱动程序和内核调用绕过了 HAL,而直接与硬件打交道。

HAL 模式最大的副作用是导致 Windows Server 2003 与原有 DOS 和 Windows 版本的程序 不兼容,因为这些程序直接对硬件进行读写。但这种不兼容性只是 HAL 在为我们带来安全性 和易移植性的同时所收取的微小代价罢了。

1.5.3.2 微内核

Windows Server 2003 微内核(简称内核)的权力无边。内核负责处理系统的所有操作,

而且几乎是所有的系统功能都要经过内核。内核主要提供下列功能:线程安排和调度;陷井处 理和异常调度;中断处理和调度;多处理机同步;供执行体使用的基本内核对象(在某些情 况下可以导出到用户态)。

Windows Server 2003 的内核始终运行在核心态,代码短小紧凑,可移植性也很好。一般 来说,除了中断服务例程,正在运行的线程是不能抢先内核的。Windows Server 2003 的微内 核的本质意思是执行某个功能时所必须要的内核。(注:请勿混淆内核(或微内核)和内核模 式。尽管它们是有联系的,但不是同一回事儿。内核是指各个独立的代码片段,这些代码片 段组成操作系统的核心。内核模式是指处理器支持一种特许操作状态。在 Windows Server 2003 中,微内核运行在内核模式下)。

Windows Server 2003 中的微内核设计将许多操作分派给执行体,除了执行线程调度外,

几乎将所有的策略制定都留给了执行体。在内核以外的系统组件,处理它们的资源分配、安 全认证等都要执行体付出不可忽略的策略开销。为了降低这种开销,内核提供了一组严格定 义的、可预测的、使操作系统得以工作的基础设施,这为执行体的高级组件提供了必需的低 级功能接口。这一点充分体现了 Windows Server 2003 将策略与机制分离的设计思想。

内核通过一组被称作“内核对象”的简单对象帮助控制、处理并支持执行体对象的创建。

大多数执行体级别的对象都封装了一个或多个内核对象。如,一个称作“控制对象”的内核 对象集合为控制各种操作系统功能建立了语义。这个对象集合包括内核进程对象、异步过程 调用对象、延迟过程调用对象和几个由 I/O 系统使用的对象(如中断对象)。再如,另一个称 作“调度程序对象”的内核对象集合负责同步操作并影响线程调度。调度程序对象包括内核 线程、互斥体、事件、内核事件对、信号量、定时器和可等待定时器。执行体使用内核函数 创建内核对象的实例,使用它们构造更复杂的对象提供给用户态。

另外内核还处理处理器异常现象。当要求处理器进行某些不允许的操作,如向内存锁定 区写入或被 0 除时,就会产生异常。Windows Server 2003 内核的最后一个用处是支持掉电恢 复。如果 Windows Server 2003 系统装备了智能型不间断电源(UPS),则当电源掉电时,内核

另外内核还处理处理器异常现象。当要求处理器进行某些不允许的操作,如向内存锁定 区写入或被 0 除时,就会产生异常。Windows Server 2003 内核的最后一个用处是支持掉电恢 复。如果 Windows Server 2003 系统装备了智能型不间断电源(UPS),则当电源掉电时,内核

相關文件