Windows 2000 系统的特点

详细点哦还有出厂年份... 详细点 哦 还有出厂年份 展开
 我来答
j918p
2008-10-09 · TA获得超过2万个赞
知道大有可为答主
回答量:1.6万
采纳率:89%
帮助的人:1.4亿
展开全部
Windows 2000新的系统特性

出自上海热线电脑频道

摘要:本文介绍了Windows 2000新的系统特性。
关键字:网络操作系统、文件保护、驱动程序、用户模式代码开发、硬件设备

Windows 2000是微软公司十几年的软件开发生产的最新成果,也是历史上最大的一个商用操作系统家族。微软公司为此投入了大量的人力和物力,凝聚了许多优秀的软件开发人员的智慧和心血。Windows 2000继承了Windows NT 4.0和Windows 98的优点,同时这两个操作系统几年来无数用户的使用也为Windows 2000的开发提供了经验。Windows 2000几乎集成了当前Windows系统平台的所用功能,并且支持大量流行的硬件设备和整机。

可靠性和可用性的提高

Windows 2000作为新一代的网络操作系统家族,无论在性能上还是可靠性上都有了质的飞跃。在Windows 2000中,微软已经针对可能影响可靠性的软硬件和系统管理问题专门进行了加强。对操作系统来说,用户的主要需求就是系统的可靠性。Windows 2000 操作系统家族在硬件、软件和系统管理方面进行了增强以解决可用性和可靠性的问题。微软利用内部和从客户处搜集的大量数据来分析引起Windows NT 4.0失败的原因。这些信息帮助微软增强了Windows 2000的稳定性和可靠性,并且帮助微软开发了工具,这些工具可以帮助管理员更快得分析问题,以及更快得从不可避免的失败中恢复。

Windows 2000 在三个主要方面提高了可靠性和可用性:对操作系统进行基本的改进,帮助开发人员创建可靠的代码,提供管理员提高系统可用性的新的工具。

首先,通过结构的修改,操作系统的稳定性得到了增强,结构的修改主要集中在保护操作系统的内核和共享内存上面。包括:
·内核模式的写保护,这有助于阻止错误的代码干涉操作系统的工作。
·Windows 文件保护,阻止新的软件安装替代基本的系统文件。
·Windows 2000 使用Driver Signing (驱动程序数字签名)来识别通过了Windows 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 Executive 的其它部分与特定的硬件分离开来,使操作系统与多处理器平台相兼容。
·Microkernel(微内核) 管理微处理器。它执行一些重要的功能,例如调度,中断,以及多处理器同步等。

由于提供预先检测,阻止了应用程序、服务或设备驱动程序对内存的不正确使用,Windows 2000提高了可靠性。操作系统可以非常出色的管理应用程序以及系统的错误,使得系统不会宕机。另外,为了保证一个程序的失败不会导致影响操作系统或者其他应用程序的运行,其他的子系统与应用程序被隔离在单独的内存空间中。

在Windows 2000中对可靠性的改进主要在三个领域:结构改进,核心模式代码开发工具,以及用户模式代码开发工具。

结构改进有助于保护操作系统核心模式操作。这些改进包括:

核心模式写保护

为了保护操作系统中的每一部分不会受其它部分的错误的影响,Windows 2000在内核部分和设备驱动程序中添加了写保护和只读部分,正象Windows NT总是有用户模式应用程序和动态连接库一样。
为了提供这种保护,物理内存映射标志出包含代码的内存页面,保证它们不能够被覆盖,即使是操作系统也不能。这样就阻止了核心模式软件破坏了其他核心模式软件。这些特性在缺省情况下是激活的,当然如果用户和开发人员愿意的话,可以关闭这些特性。

Windows 文件保护

在Windows 2000以前的Windows版本中,安装软件可能覆盖共享的系统文件(例如,DLL,和可执行文件)。如果系统文件被覆盖,系统性能就会变得不可靠,程序的行为就会混乱,操作系统可能会失败。

Windows 文件保护在安装前检查原来的系统文件的版本。这样就保证象.sys, .dll, .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
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可以配置将随机的内存分配错误映射到特定得驱动程序。

Device Path Exerciser
Device Path Exerciser (Devctl)测试设备驱动程序如何处理错误。它利用各种各样的用户模式I/O接口同步或者异步调用驱动程序,并且测试驱动程序如何处理错误的请求。例如,它可能连接到网络驱动程序并且请求它回卷磁带。可能连接到打印驱动程序并且请求它重新同步通信线路。或者,它也可能使用一个错误的缓冲区请求某个设备功能。这样的测试帮助开发人员使得驱动程序在错误的条件下更强壮。

用户模式代码开发

Windows 2000 包括一个新的工具---PageHeap。它可以帮助开发人员在开发非核心模式代码的时候找到内存访问错误。

PageHeap
Heap(堆)指的是用于临时存放代码的内存。堆错误在应用程序开发中是一个经常遇到的问题。最典型的发生堆错误的情况是一个应用程序分配了一个特定大小的内存块,但是却在该范围之外进行写操作。另一个发生错误的原因是正在写的内存块已经被释放掉了。在这些情况下,可能会出现两个应用程序写同一部分内存,从而导致系统失败。Windows 2000中新添加的PageHeap特性就可以帮助开发人员发现它们的内存错误。

当PageHeap 被激活时,该应用程序的所有的堆分配被放到内存中,这样堆的边界就与虚拟内存的边界排在一起了。与堆相邻的虚拟内存页面被设置为NO_ACCESS。在该应用程序中对堆后面的空间的访问就会立刻引起错误,这就可以在一个调试工具中被捕获,开发人员就可以找到出错的代码。

在释放堆时,过程与之类似。PageHeap修改释放的应用程序虚拟页面为NO_ACCESS,这样,如果应用程序试图读写该内存时就会发生访问错误。

如果为一个应用程序运行PageHeap特性,应用程序要比正常时运行得慢,并且需要更多的虚拟内存,因为每一个堆的分配都需要两个完整的虚拟内存页面。随着应用程序对堆的使用的增加,可能需要增加系统的虚拟内存的大小,否则会出现虚拟内存不够的错误信息。除非系统有相当大的虚拟内存,否则建议不要同时运行两个以上的激活了PageHeap特性的应用程序。

所有的这些工具和开发方式,其目的都是为了保证核心系统的在各种情况下的尽可能正常的运行,以提高系统的可靠性

Active Directory Service Interfaces (ADSI)
Windows NT 4.0适合构建一个小到中型的网络环境,而Windows 2000已经成长到有能力构件一个中到大型的网络环境。这个能力的一个主要标志是Active Directory的实现。一个大型分布式计算环境的主要挑战之一就是定义和定位资源,包括用户、组、打印队列和文档,而目录服务是达到这个目的的有效工具。目录服务就像一个电话簿,当你提供了一个人或资源的名字,它就可以提供访问这个人或资源的必要信息。

当前的实际网络环境,实际情况会更加复杂。可能在同一个内部网络中包含了多个不同的目录,某些操作系统、电子邮件系统和群件系统都有自己的目录服务。由于目录服务对于分布式的网络环境是如此的重要,所以我们需要由一个方便的方法可以对目录服务进行管理。

活动目录服务接口(Active Directory Service Interfaces, ADSI)可以解决这个问题。 ADSI提供了一个单一的、固定的和开放的接口,可以用于管理和使用多个不同的目录。ADSI是一组COM编程接口,为用户和独立软件开发商(ISVs)提供了一组方便的、预定义的统一接口来访问和管理多个目录服务。

ADSI可以让管理人员方便的实现通用的管理任务,如添加一个新用户,管理打印机和在分布式的计算环境中定位资源。开发人员则可以用ADSI快速实现他们的应用和主目录的连接。ADSI是Windows? Open Services Architecture (WOSA) Open Directory Service Interfaces (ODSI)的一个组成部分。

ADSI的主要特征为:

开放 任何目录服务都可以实现一个ADSI provider

目录无关性 管理和应用不必和某个目录服务紧紧绑在一起,同一个应用可以访问多个目录,节省了开发时间和支持费用

Java支持 Java applets和Java COM可以使用ADSI对象访问目录

安全 ADSI支持身份验证和授权

OLE自动化 任何OLE自动化控制器(如Visual Basic, Perl, Rexx, C/C++等)都可以用于开发目录服务应用,开发人员可以使用熟悉的工具,可以降低开发的时间和支持费用

丰富的功能 ADSI开发模型提供了丰富的功能,ISV和用户都可以用于开发简单的管理应用和重要的应用

可扩展性 目录提供者,ISV和用户都可以在ADSI中扩展新的对象和功能,满足自己的需要

ADSI定义了两种类型的对象:架构(schema)管理对象用于浏览和扩展架构,目录对象代表ADSI provider管理的目录。ADSI定义了一组标准的容器和叶对象,用于表达网络目录中通用的对象。

标准容器对象 标准叶对象
·Name spaces· Country· Locality· Organization· Organizational unit· Domain· Computer · User· Group· Alias· Service· Print queue· Print device· Print job· File service· File share· Session· Resource

下面我们来看一些使用ADSI的简单例子。
例子1 获得用户列表
获得用户的列表和属性是一个常见的需求。这个例子中使用了Visual Basic script获得ABX公司的每个用户的名字和电话号码,并传递给PrintUser子程序。
dim MyUserContainer as IADsContainer
dim MyUser as IADsUser

set MyUserContainer as GetObject("WinNT://ABX")

for each MyUser in MyUserContainer
PrintUser MyUser.Name, MyUser.TelephoneNumber
next MyUser

例子2 将用户加入到组
出于安全目的,我们需要将用户加入到组。这个例子中,上例中的那些用户被加入到Manufacturing Users组中。
dim MyUserContainer as IADsContainer
dim MyUser as IADsUser
dim MyGroup as IADsGroup
dim Filter as Variant

Filter = Array("user");

set MyUserContainer = GetOBject("WinNT://ABX")
MyContainer.Filter = Filter ' filter out all objects except users
set MyGroup = GetObject("WinNT://ABX/Manufacturing_Users")

for each MyUser in MyUserContainer
if not MyGroup.IsMember(MyUser) then
MyGroup.Add(MyUser)
end if
next MyUser
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式