正文

Windows 2000/XP体系结构2011-09-11 21:59:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/edwardguo/52785.html

分享到:

核心(kernel):包含了最低级的操作系统功能:线程调度、中断和异常调度、多处理器同步等,同时它也提供了执行体(Executive)来实现高级结构的一组例程和基本对象。
执行体包含了基本的操作系统服务,例如内存管理器、进程和线程管理、安全控制、I/O以及进程间的通信
硬件抽象层(Hardware Abstraction Layer, HAL)将内核、设备驱动程序以及执行体同硬件分隔开来,使它们可以适应多种平台
设备驱动程序(Device Drivers):包括文件系统和硬件设备驱动程序等、其中硬件设备驱动程序将用户的I/O函数调用转换为对特定硬件设备的I/O请求
图形引擎:包含了实现图形用户界面

 

 

 

可移植性:
方法一:分层设计:依赖于处理器体系结构或平台的系统底层部分被隔离在单独的模块之中,系统的高层可以被屏蔽在千差万别的硬件平台之外。
提供操作系统可移植性关键组件:HAL和内核。依赖于体系结构的功能(如线程描述表切换)在内核中实现;因计算机而异的功能在HAL中实现。
方法二:Windows 2000/XP几乎全部使用高级语言写成:
执行体、实用程序和设备驱动程序:C语言
图形子系统部分和用户界面:C++编写
必须和系统硬件直接通信的操作系统部分、或性能极度敏感的部分:汇编语言编写(主要分布在内核及HAL中,极少量分布于执行体少数区域、Win32子系统的核心部分和少数用户态库中)

 

 

 

可移植性:
方法一:分层设计:依赖于处理器体系结构或平台的系统底层部分被隔离在单独的模块之中,系统的高层可以被屏蔽在千差万别的硬件平台之外。
提供操作系统可移植性关键组件:HAL和内核。依赖于体系结构的功能(如线程描述表切换)在内核中实现;因计算机而异的功能在HAL中实现。
方法二:Windows 2000/XP几乎全部使用高级语言写成:
执行体、实用程序和设备驱动程序:C语言
图形子系统部分和用户界面:C++编写
必须和系统硬件直接通信的操作系统部分、或性能极度敏感的部分:汇编语言编写(主要分布在内核及HAL中,极少量分布于执行体少数区域、Win32子系统的核心部分和少数用户态库中)

 

内核:1、线程安排和调度;2、陷阱处理和异常调度;3、中端处理和调度;4、多处理器同步;5、供执行体使用的基本内核对象
始终运行在内核态,除了终端服务例程(Interrupt Service Routine, ISR),正在运行的线程是不能抢先内核的
内核对象:提供了一组严格定义的、可预测的、使得操作系统得以工作的基础设施,为执行体的高级组件提供了必须的低级功能接口
内核对象:帮助控制、处理并支持执行体对象的创建,以降低执行体在对内核以外很多的系统组件进行资源分配、安全认证的时候付出不可忽略的策略开销。
“调度程序对象”(内核对象集合):同步操作并影响线程调度,包括内核线程、互斥体(Mutex)、事件(Event)、内核事件对、信号量(Semaphore)、定时器和可等待定时器。执行体使用内核函数创建内核对象的实例,使用它们来构造更复杂的对象提供给用户态
硬件支持:内核的另外一个重要功能就是把执行体和设备驱动程序同硬件体系结构的差异隔离开,包括处理功能之间的差异,例如中断处理、异常情况调度和多处理器同步。对于硬件有关的函数,也是尽可能使公用代码的数量达到最大。内核支持一组在整个体系结构上可移植、语义完全相同的接口,大多数这种接口的实现在整个体系结构上是完全相同的。Windows 2000/XP可以在任何机器上调用那些独立于体系结构的接口,不管代码是否随体系结构而异,这些接口的语义总是保持不变。一些内核接口实际上是在HAL中实现的,因为同一体系结构内接口的实现可能也因平台系统而异
内核包含少量支持老版本的MS-DOS程序所必需的x86专用代码,这些接口是不可移植的。另一个是提供缓冲区的CPU高速缓存转化支持的接口;还有就是描述表切换

硬件抽象层:
HAL是在多种硬件平台上的可移植性的关键部分。是一个可加载的核心态模块HAL.dll,为运行在Windows 2000/XP上的硬件平台提供低级接口。HAL隐藏各种与硬件有关的细节,例如I/O接口、中断控制器以及多处理器通信机制等任何体系结构专用的和依赖于计算机平台的函数。

执行体
Windows 2000/XP的执行体是NTOSKRNL.EXE的上层(内核是其下层)包括五种类型的函数:
1)从用户态导出并且可以调用的函数。接口在NTDLL.DLL中。通过Win32API或一些其他的环境子系统可以对它们进行访问。
2)从用户态到处并且可以调用的函数。但当前通过任何文档化的子系统函数都不能使用。
3)在Windows 2000DDK中已经导出并且文档化的核心态调用的函数。
4)在核心态组件中调用但是没有文档化的函数。
5)组件内部的函数

执行体包含的重要组件:
1)进程和线程管理器创建及中止进程和线程。对进程和线程的基本支持在Windows 2000内核中实现,而执行体给这些低级对象添加附加语义和功能。
2)虚拟内存管理器实现“虚拟内存”。内存管理器也为高速缓存管理器提供基本的支持。
3)安全引用监视器在本地计算机上执行安全策略。保护了操作系统资源,执行运行时对象的保护和监视。

4)I/O系统执行独立于设备的输入/输出,并为进一步处理调用适当的设备驱动程序。
 5)高速缓存管理器通过将最近引用的磁盘数据驻留在主内存 中来提高文件I/O的性能,并且通过在把更新数据发送到磁盘之前将它们在内存中保持一个短的时间来延缓磁盘的写操作,这样就可以实现快速访问。

执行体还包含四组主要的支持函数,由上面列出的执行体组件使用。其中大约有三分之一的支持函数在DDK中已经文档化,提供下面功能:
1)对象管理,创建、管理以及删除Windows 2000/XP的执行体对象和用于代表操作系统资源的抽象数据类型,例如进程、线程和各种同步对象。
2)本地过程调用(Local Procedure Call, LPC)机制,
3)一组广泛的公用运行时函数,例如字符串处理、算术运算、数据类型转换和完全结构处理。
4)执行体支持例程,例如系统内存分配(页交换区和非页交换区)、互锁内存访问和两种特殊类型的同步对象(资源的快速互斥体)。

2.3.4设备驱动程序
    设备驱动程序是可加载的核心态模块(通常以.SYS为扩展名),它们是I/O系统和相关硬件之间的接口。Windows 2000/XP上的设备驱动程序不直接操作硬件,而是HAL功能作为与硬件的接口
    Windows 2000/XP中有如下几种类型的设备驱动程序:
1、硬件设备驱动程序操作硬件,将输出写入物理设备或网络,并从物理设备或网络获得输入
2、文件系统驱动程序接受面向文件的I/O请求,并把它们转化为对特殊设备的I/O请求
3、过滤器驱动程序截取I/O并在传递I/O到下一层之前执行某些特定处理。
安装设备驱动程序是把用户编写的核心态代码添加到系统的唯一方法,某些程序通过简单地编写设备驱动程序的方法来访问操作系统内部函数或数据结构,但它们不能从用户态访问。

     Windows 2000/XP增加了对即插即用和高级电源选项的支持,使用Windows驱动程序模型(Windows Driver Model, WDM)作为标准驱动程序模型,同时也支持Windows NT的驱动程序。
      从WDM角度堪,有三种驱动程序:
1)总线驱动程序用于各种总线控制器、适配器、桥或者可以连接子设备的设备,这是必须的驱动程序。
2)功能驱动程序用于驱动那些主要的设备,提供设备的操作接口。
3)过滤器驱动程序用于为一个设备或者一个已经存在的驱动程序增加功能,或者改变来自其他驱动程序的I/O请求和响应行为。
      没有一个单独的设备驱动控制着整个设备。总线设备驱动程序负责向即插即用管理器报告它上面有的设备,而功能驱动程序负责操纵这些设备。

阅读(938) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册