440楼#
发布于:2002-10-25 13:21
改。同时在单片式操作系统中大量的操作系统代码运行于同一内存空间,这就意味着任何操作系统组件都可能损坏正在被其它组件使用数据。
B) 分片式的操作系统。将操作系统发分为不同层次中的模块。每个模块提供一组功能函数其它模块调用。在某一层次上的代码只能调用较低层次上的代码。在一些了系统中,DEC公司的OpenVMS包括老的Multics操作系统,硬件甚至强制分层(使用多重、分级处理模式)。分层操作系统结构的优点是,由于 |
|
441楼#
发布于:2002-10-25 13:22
每层代码只能访问较低层的接口(和数据结构),因此限制了使用无限权利的代码数量,这种结构也允许在最底层开始调试操作系统,然后一层一层的往上调试,直到整个操作系统工作正常。层次化结构也使增强操作系统更容易,因为修改或替代单独的一层,不影响系统的其它部分。
|
|
442楼#
发布于:2002-10-25 13:22
C) 客户服务器微内核模型。其思想是把操作系统分成若干个服务器进程,每个服务器进程完成一种服务,如内存管理服务、进程创建服务和处理器调度服务。每个“服务器”运行在用户态,等待客户提出服务请求。“客户”,可以是另一个操作系统的组件,也可以是应用程序,它通过发送一个消息给服务器来请求服务。运行在核心态的操作系统的微内核把该消息传递给服务器,该服务器执行操作,内核用另一种消
|
|
443楼#
发布于:2002-10-25 13:22
息把结果返回用户。
Windows2000融合了分层操作系统和客户服务器微内核操作系统的特点。对性能影响很大的操作系统组件在核心态下运行。在核心态下,组件可以和硬件交互,也可以在组件之间交互,并且不会引起描述表切换和模式转变,例如,内存管理器、高速缓存管理器、对象及安全性管理器网络协议、文件系统(包括网络服务器和重定向程序)、所有线程和进程管理都运行的核心态。 当然,所有这些组件都应该受到保护,以避免给其它的应用程序侵扰,应用程序不能直接访问操作系统特 |
|
444楼#
发布于:2002-10-25 13:22
性部分的代码和数据(尽管他们可以快速调用其它的内核服务)。这种保护使得Windows2000成为既坚固又稳定的应用程序服务器的原因之一。而且从核心操作系统服务的角度,如虚拟内存管理、文件操作、复合文件及打印共享来看,Windows2000作为工作站平台仍是迅速和敏捷的。
由于WDM驱动程序的标准应用平台是Windows 2000,是内核的重要组件之一并和其它内核组件有相当多的关联,为本文讨论的完整性,首先讨论Windows 2000的系统结构。 |
|
445楼#
发布于:2002-10-25 13:22
1.2 Windows 2000的系统结构
图1 Windows 2000 系统结构图 图1显示了Windows 2000内核系统结构图。Windows 2000是由内核模式和用户模式两类代码构成的。 用户态代码模式主要包括各个环境子系统:POSIX,OS/2,Win32。在这三个子系统中Win32比较特殊,它是Windows 2000的必须组件。实际上,其它两个子系统只是在需要时才被配置启动,而Win32必须始终 |
|
446楼#
发布于:2002-10-25 13:22
一种抽象。我们可以称之为“抽象硬件模型”。HAL通过动态链接库(DLL,Dynamic Link Library)实现,管理的项目包括:
w 片外高速缓存 w 定时器 w I/O总线 |
|
447楼#
发布于:2002-10-25 13:23
w 设备寄存器
w 中断控制器 w DMA控制器 各种系统组件使用HAL函数与CPU外的硬件打交道,这样就把平台特定的细节对系统的其余部分隐藏起来,可移植性极佳。特别地,HAL例程的使用使得内核和设备驱动程序在有相同CPU体系结构的平台上二进制代码兼容。 |
|
448楼#
发布于:2002-10-25 13:23
B) 内核(Kernel) 内核是整个操作系统的神经中枢,同执行体的其它部分不同,内核的大小从不会溢出内存。尽管执行一个中断服务例程可以中断内核,但内核的执行操作永远不会被其它正在运行的线程抢先。内核始终运行于核心态,其代码短小精悍,可移植性优异。内核主要由C语言编写,对那些需要尽可能快速执行的代码或非常依赖于处理器性能的任务保留用汇编语言编写。它提供管理以下功能的机制:
w 中断和异常处理 |
|
449楼#
发布于:2002-10-25 13:23
w 线程调度和同步
w 多处理机同步 w 定时控制 w 内核对象 内核的目标之一是提供一个严格定义的,可预测的操作系统基本要素和机制的低级操作。内核通过执行操 |
|
450楼#
发布于:2002-10-25 13:23
来通讯。
1)系统服务接口 提供用户模式到内核模式的受控路径。在Win2000中,系统服务调度者使用一种基于CPU硬件异常机制的技术给用户模式代码提供对Executive服务的访问权。 2)对象管理器 执行体通过一个基于对象的接口给用户模式进程提供服务。文件、进程、线程、内存段等事物都是对象。 |
|
451楼#
发布于:2002-10-25 13:24
对象管理器执行管理执行体对象的所有工作,包括创建和删除对象、维护全局对象名字空间,以及记录对指定对象有多少等待的引用。
3)配置管理器 从驱动程序开发者的角度看,配置管理器的主要工作是,使用登记(Registry)数据库,维持安装在机器 |
|
452楼#
发布于:2002-10-25 13:24
上的所有硬件和软件资源。
驱动程序使用Registry作以下工作: w 把自己标识为可信任的系统组件 w 查找和分配外围硬件 w 建立错误记录日志文件 w 启用驱动程序性能测量 4)进程管理器 |
|
453楼#
发布于:2002-10-25 13:24
一个进程中包含一个或多个线程(Thread)。进程管理器处理进程和线程的创建、管理和销毁,它还为同步线程的活动提供一组标准的服务。
5)安全引用监视器 该组件强制系统的安全性策略。安全性引用监视器提供一组原语,其它组件可以调用它们来验证对对象的 |
|
454楼#
发布于:2002-10-25 13:24
例程之前处理这类工作。
6)虚拟内存管理器 在Windows2000下,每个进程有一个4GB的虚拟地址空间。这个空间的0~2GB是进程的私有代码和数 |
|
455楼#
发布于:2002-10-25 13:25
模式代码。虚拟内存管理器的任务之一是,使用按需分页的虚拟内存管理技术来维护地址空间映像。从驱动程序开发者的观点来看,它负责维护系统的堆空间。在DMA操作中,它还为驱动程序构造和操作缓冲
|
|
456楼#
发布于:2002-10-25 13:25
区。
7)局部过程调用(LPC) 局部过程调用是一个消息传递机制,用于在同一台机器上的进程之间通信。LPC主要由受保护的子系统及其客户程序使用,设备驱动程序对LPC机制没有访问权。 8)I/O管理器 执行器组件把I/O请求从用户模式和内核模式线程转换成对各种驱动程序例程的合适顺序的调用。通过使 |
|
457楼#
发布于:2002-10-25 13:25
用很好定义的接口,I/O管理器能够以相同的方式与所有驱动程序通信。
9)PnP管理器 PnP管理器由两部分组成:核心态PnP管理器和用户态PnP管理器。核心态PnP管理器同操作系统组件和内核驱动程序进行交互来动态的维护、配置、管理设备。用户态PnP管理器和用户安装组件进行交互,来配置和安装设备。用户态PnP管理器同时也和应用程序交互,例如:为一个应用注册一个设备变化通知消 |
|
458楼#
发布于:2002-10-25 13:25
息用来在设备状态发生变化时通知应用程序。
10)Power管理器 Power管理器负责管理系统的电源使用。它负责维护一个系统范围内的电源策略,并负责Power IRP在系统中传递路径。Power管理器通过以下几点来考虑系统应处于什么状态――浅度睡眠,深度睡眠,关闭,还是正常运作 : w 系统当前活动状况 |
|
459楼#
发布于:2002-10-25 13:25
w 系统电池状态
w 应用程序的电源请求 w 用户动作,例如:按下电源启动按钮 w 控制面板的设置 1.3 Windows 2000和WDM 驱动程序的设计目标 WDM设备驱动程序和Windows2000在设计目标上有很多方面是一致,尤其是系统输入输出管理器更是如 |
|