发信人: lihuiwfo()
整理人: ipaq(2001-05-25 12:02:54), 站内信件
|
Windows 2000作为新一代的网络操作系统家族,无论在性能上还是可靠性上都有 了质的飞
跃。在Windows 2000中,微软已经针对可能影响可靠性的软硬件和系统管理问题 专门进行
了加强。Windows 2000在三个主要的方面改进了可靠性。首先,对结构进行了修 改,主要
目的在保护操作系统的内核和共享内存,因此增强了系统的稳定性。第二,开发 了新的工
具可以帮助开发者创建更可靠的代码。第三,Windows 2000包含了新的管理特性 可以提高
可靠性。在本文中将对这些增强和新特性进行专门介绍
介绍
====
对操作系统来说,用户的主要需求就是系统的可靠性。我们平常提到的可靠性实 际上指的是
两个方面的操作系统特性:可靠性和可用性。在提到操作系统的时候,可靠性是 指一台服务
器如何相容的运行应用程序和服务而尽量少的发生错误,可靠性越高就表示系统 发生错误的
机会越少;而可用性是指系统可以使用的时间,可用性高就表示系统可用使用的 时间多,因
为日常维护和意外错误导致的宕机时间就少。可靠性可以通过减少潜在的系统失 败的原因来
提高,而可用性则可以通过解决宕机的原因来解决。简而言之,一个可靠的和可 用的系统很
少失败,在关机后也很容易重新启动
Microsoft Windows 2000 操作系统家族在硬件、软件和系统管理方面进行了增强 以解决
可用性和可靠性的问题。微软利用内部和从客户处搜集的大量数据来分析引起Wi ndows NT
4.0失败的原因。这些信息帮助微软增强了Windows 2000的稳定性和可靠性,并且 帮助微软
开发了工具,这些工具可以帮助管理员更快得分析问题,以及更快得从不可避免 的失败中恢
复。
Windows 2000 在三个主要方面提高了可靠性和可用性:对操作系统进行基本的改 进,帮助
开发人员创建可靠的代码,提供管理员提高系统可用性的新的工具。
首先,通过结构的修改,操作系统的稳定性得到了增强,结构的修改主要集中在 保护操作系
统的内核和共享内存上面。包括:
内核模式的写保护,这有助于阻止错误的代码干涉操作系统的工作。
Windows 文件保护,阻止新的软件安装替代了基本的系统文件。
Windows 2000 使用Driver Signing (驱动程序数字签名)来识别通过了Wi ndows
Hardware Quality Labs 测试的驱动程序,并且在用户将要安装没有数字 签名的驱
动程序时对用户提出警告。
第二,新的工具可以帮助开发人员创建更可靠得驱动程序。例如,一个公共的驱 动程序问题
的来源是不正确的使用共享内存。Pool Tagging 和 Guard Pages 特性使得跟踪 内存使用
更加简单,因此可以帮助开发人员对设备驱动程序进行调试。Driver Verifier 和 Device
Path Exerciser 工具可以让开发人员检查错误分类,而在以前这些问题在测试环 境中很难
发现。
第三,Windows 2000 包括了新的管理特性,这些特性和增强改进了可用性。其中 最重要的
是减少了要求系统重新启动的维护功能的数目。关键的诊断过程运行的更快速, 例如进行硬
盘检查或者在系统失败时创建一个关于内存使用的详细报告。另外的几个改进减 少了关机和
重新启动的时间。
本文将对这些改进在技术方面做一个全面的介绍
系统结构和内存使用
-----------------
可靠性和可用性的改进的核心是对操作系统和内存的保护。许多会引起系统不稳 定的问题主
要是由于对操作系统内核(在内核中执行着基本的系统服务)的意外的影响,。 因为内核控
制着整个操作系统,所以影响内核的代码错误对可靠性有极大的影响。影响内存 的错误也是
不稳定的一个经常的来源。
Windows 2000操作系统提供了一个应用程序运行的环境。它包含了一系列的小软 件组件,
它们在一起工作来执行任务。每一个组件提供了一系列的功能来作为系统其它部 分的接口。
这些模块提供了访问CPU和其他硬件资源的方式。操作系统还提供了使程序和组件 可以互相通
信的机制。
核心模式和用户模式
-----------------
Windows 2000 将执行代码分为以下两种模式
用户模式
用户模式中的软件在没有特权的状态下运行,对系统资源只有有限的访问权限。 例如,软件
不能直接访问硬件。Windows 2000基础的应用程序和被保护的子系统运行在用户 模式下。
被保护的子系统运行在自己的空间内,不会互相干涉。
核心模式
在核心模式中,软件可以访问所有的系统资源,例如计算机硬件和敏感的系统数 据。核心模
式中的软件构成了操作系统的核心,它们可以分为如下几组:
Executive(执行体) 包含为环境子系统和其他执行体组件提供系统服务的 系统组件。
它们执行的系统任务包括输入/输出,文件管理,虚拟内存管理,资源管理,以及 进程内部通
信等等。
Device drivers(设备驱动程序) 将组件的调用(例如,请求打印机)翻译 为硬件操
作。
Hardware abstraction layer(HAL,硬件抽象层) 将Windows 2000 Exec utive
的其它部分与特定的硬件分离开来,使操作系统与多处理器平台相兼容。
Microkernel(微内核) 管理微处理器。它执行一些重要的功能,例如调度 ,中断,以
及多处理器同步等。
内存模型
-------
Windows 2000 增添了新的特性以解决因为共享内存的不同的处理方式引起得问题 。要理解
这些改进,就要先理解Windows 2000是如何管理内存的。
Windows 2000 使用虚拟内存管理器来管理虚拟内存和物理内存。
虚拟内存指操作系统如何使内存对应用程序可以使用。Windows 2000 支持4GB的 虚拟内存。
其中2GB为核心模式使用,另外2GB为核心模式和用户模式共同使用。
物理内存指计算机中安装的内存芯片。虚拟内存管理器(VMM)使用内存映射表来 跟踪每一个
进程使用的虚拟内存地址以及这些地址引用得实际数据在物理内存中的位置。为 了让多个应用
程序可以共享内存空间,VMM使用一个叫做PAGING的进程在物理内存和硬盘之间交 换内容。这
些被交换的内容叫做page files.
可靠性改进
---------
由于提供预先检测,阻止了应用程序、服务或设备驱动程序对内存的不正确使用 ,Windows
2000提高了可靠性。操作系统可以非常出色的管理应用程序以及系统的错误,使 得系统不会宕
机。另外,为了保证一个程序的失败不会导致影响操作系统或者其他应用程序的 运行,其他的
子系统与应用程序被隔离在单独的内存空间中。
在Windows 2000中对可靠性的改进主要在三个领域:结构改进,核心模式代码开 发工具,以
及用户模式代码开发工具。
结构改进有助于保护操作系统核心模式操作。这些改进包括:
核心模式写保护
Windows 文件保护
驱动程序数字签名
核心模式写保护
-------------
为了保护操作系统中的每一部分不会受其它部分的错误的影响,Windows 2000在 内核部分和
设备驱动程序中添加了写保护和只读部分,正象Windows NT总是有用户模式应用 程序和动态
连接库一样。
为了提供这种保护,物理内存映射标志出包含代码的内存页面,保证它们不能够 被覆盖,即使
是操作系统也不能。这样就阻止了核心模式软件破坏了其他核心模式软件。这些 特性在缺省
情况下是激活的,当然如果用户和开发人员愿意的话,可以关闭这些特性。
Windows 文件保护
----------------
在Windows 2000以前的Windows版本中,安装软件可能覆盖共享的系统文件(例如 ,DLL,和
可执行文件)。如果系统文件被覆盖,系统性能就会变得不可靠,程序的行为就 会混乱,操作
系统可能会失败。
Windows 文件保护在安装前检查原来的系统文件的版本。这样就保证象.sys, .d ll, .ocx, .ttf, .fon, .exe等系统文件不会被替代。Windows 文件保护在后
台运行,保护所有的由Windows 2000安装程序安装的文件。它检测其他程序要替 换或删除一
个被保护的系统文件的企图。Windows 文件保护检查文件的数字签名来确定新文 件是否为正
确的版本。如果这个文件的版本不正确,Windows文件保护就从dllcache目录,网 络安装路
径或者Windows 2000光盘中替换这个文件。如果Windows文件保护找不到合适的文 件,它就
会提示用户输入正确的路径。Windows文件保护还会将替换文件的企图写入事件日 志。
缺省情况下,Windows文件保护是被激活的,只允许在安装下面的软件时替换被保 护的系统文
件:
使用Update.exe安装Windows 2000 Service Packs
使用Hotfix.exe
使用Winnt32.exe进行操作系统升级
Windows Update
Windows 2000 Device Manager/Class Installer
驱动程序签名
-----------
驱动程序签名有助于提高驱动程序的质量,因为它允许Windows 2000和Windows 98通知用
户他们安装的驱动程序是否通过了微软的认证程序。驱动程序签名将一个加密的 数字签名附
加在通过了Windows Hardware Quality Labs (WHQL) 测试的代码文件上。.
如果驱动程序运行在Windows 2000和Windows 98操作系统中,那么给驱动程序签 名则是
WHQL测试的一部分。数字签名与独立的驱动程序包结合在一起,Windows 2000可 以识别它。
这种认证证明用户使用的驱动程序是经过微软测试的那个驱动程序,如果在该驱 动程序被放
在HCL中后被修改过,Windows 2000就会通知用户。
驱动程序允许三种反应:Warn,Block,Ignore.
Warn 在被安装的驱动程序没有数字签名的情况下,让用户了解,并且让用户 决定是否
安装。Warn还让用户可以选择安装一个被保护的驱动程序文件的没有签名的版本 。
Block 禁止安装所有的没有签名的驱动程序。
Ignore 允许安装所有文件,不管这些程序是否有数字签名。
缺省情况下,Windows 2000 以Warn方式发布。
核心模式代码开发
---------------
如前所述,软件可以被分为两类:用户模式软件和核心模式软件。那些有助于程 序员创建
可靠的用户模式的应用程序的开发工具对开发核心模式代码的程序员来说就不合 适了。因
为编写核心模式代码由特定的要求,Windows 2000 Server中的可靠性的改进就包 括专为
核心模式开发人员使用得开发工具。
设备驱动程序是核心模式代码,它将操作系统和硬件联系到一起。为了使系统的 性能达到
最大,核心模式代码没有应用程序那样的内存保护机制。相反,操作系统充分信 任核心模
式代码没有错误。这就是为什么为了与其他的驱动程序和操作系统组件安全的协 调工作,
这些驱动程序和核心模式代码必须遵循复杂的规则的原因。一点点偏差就会导致 其他核心
模式的错误。
某些核心模式代码错误在测试阶段就可以发现。但是,像内存不足等错误,则可 能经过很
长时间才能导致系统崩溃,因此要找到在那儿产生的错误非常困难。另外,对驱 动程序开
发人员来说,要完全测试核心模式代码也是非常困难的,因为要模拟驱动程序将 会碰到的
整个环境是非常困难的。
为了解决这些问题,Windows 2000 Server 增加了下面的特性和工具来帮助开发 人员创
建更高质量的驱动程序:
Pool Tagging
Guard Pages
Driver Verifier
Device Path Exerciser
Pool Tagging
------------
Windows NT 4.0 内核包含完全共享的内存池,它被分配给各个任务,当不再需要 时内存被
返回给内存池。如果设备驱动程序发生错误的话,这种共享内存方式就会带来问 题。一个经
常发生的错误就是让核心模式组件对分配给它的内存以外的内存空间进行写操作 。这样做将
会引起另外的核心模式组件崩溃,从而导致系统失败。
另一个经常会发生的错误是为一个驱动程序的进程分配了内存,但是在进程结束 后却没有释
放,这种情况会产生内存不足的问题。内存不足经常导致系统挂起---挂起的时间 依赖于当
时的环境。例如,一个请求了很少量的驱动程序,没有释放掉它的内存将会花很 长时间才能
消耗掉整个内存池。
所有的这些错误可能很难被跟踪。为了帮助开发人员发现并且修复这些错误,微 软在Windows
2000中增加了Pool Tagging,或者称为(Special Pool)。这个工具在Windows NT 4的
Service Pack 4中就存在了。
Guard Pages
-----------
Guard Pages 工具创建了Special Pool (Pool Tagging)的边界。这些内存页面让 开发核
心模式代码的开发人员能够发现覆盖代码的错误。当程序分配内存区域,然后又 要在该区域
之内进行写操作时就会发生这种错误。而使用了Guard Page,当程序请求内存区 域时,操作
系统将内存区域从页面内存的边界开始分配。然后,操作系统就映射下一个页面 为Guard Page,
并且设置这些页面,使得代码不能够访问它们。如果程序试图对这些内存区域进 行写操作的
话,它会碰到Guard Page,而这些页面是不能写的,系统将产生一个硬件错误, 从而导致系
统失败。这种引导出的失败警告开发人员,他们的应用程序的写操作超出了范围 。
Driver Verifier
---------------
Driver Verifier 是Windows 2000内核中增加的一系列的检查。这些检查有助于 发现核心
模式中包含的错误。因为Driver Verifier 影响性能,因此不应该连续使用,也 不应该在实
际环境中使用。在测试新的应用程序或者在实际环境中为后面的重复使用进行配 置时,这是
理想的工具。Driver Verifier 在进行技术支持时也非常有用,例如有一个特定 的驱动程序
被怀疑引起系统崩溃了。Driver Verifier 还包含一个Verifier.exe文件,这是 一个用来
管理driver verifier设置的图形界面的工具。
Driver Verifier 测试特定的错误条件集合,当发现新的可能的错误模式时,这 些错误就
被添加到测试集合中。Driver Verifier可以测试下面几种类型的错误:
Memory corruption. 要想用Driver Verifier发现内存错误,必须保证驱动 程序的
所有内存都来自于Special Pool。Driver Verifier 检查类似于spinlocks, 使 用未初
始化的变量以及内存错误等等的错误。
Writing to pageable data. 这种测试寻找那些以提高的中断级别或者具有 spinlock
访问可以交换的资源的驱动程序。这是一个致命的错误,但是只会发生在一个具 体的工作
环境中。为了测试这个错误,当一个驱动程序得到spinlock或者提高了中断级别 时,Driver
Verifier 就会使所有的可交换的代码,数据,和内存池无效。如果驱动程序试 图写这些
可交换的代码,硬件将生成一个页面错误提示驱动程序试图写无效的数据。
Handling memory allocation errors. 一个经常发生的编程错误是在核心模 式不能
为驱动程序分配请求的内存时,驱动程序中没有适当的代码处理这种情况。在过 去,驱动程
序编程人员不能强迫内核返回内存分配失败。因此,他们缺少创建好的测试环境 的能力。Driver Verifier可以配置将随机的内存分配错误映射到特定得驱动程序 。
-- ▉▉▉▉▉▉▉▉▉▉
▉十二星相之小人马▉
▉八部天龙之小乱翼▉
▉人马之私人专用章▉
▉▉▉▉▉▉▉▉▉▉
※ 来源:.月光程序代码网 http://www.moon-soft.com.[FROM: 202.117.24.103]
|
|