正在加载图片...
例如,在一个热插拔的RAID(廉价磁盘冗余阵列)配置中,用户可以在运行的时候替换磁 盘。这样的设备被称为是硬件可配置的。它的驱动程序不能假定给定的磁盘设备会在某个 特定的位置固定。因此,为了保持可移植性,它的驱动程序一定不能包含硬编码的与机器 有关的值 这类磁盘设备的驱动程序可以在任何给定的机器上对一个或多个文件系统提供硬件级支 持,当然这取决于用户如何对这些磁盘分区。另外,中间层驱动程序能为高层文件系统驱 动程序提供灾难恢复(镜像分区、带集、和/或卷集)支持,这样的机器通常具有充足的存 储能力。换句话说,同样的物理磁盘驱动程序能为一些机器提供对多种高层驱动程序的支 持,而对其他的机器则不能。这样的磁盘驱动程序是软件可配置的,它们都是中间层和文 件系统驱动程序,并且它们最终依赖于底层设备和/或即插即用(PnP)硬件总线驱动程 序 Windows nt/2000HAL组件被实现成一个动态连接库,它负责所有的硬件层、平台特定支 持,包括内核模式驱动程序在内,系统中的其他任何组件都需要它的支持。HAL输出的例 程提供了平台硬件与包括所有驱动程序在内的系统软件组件之间的一个接口,这些例程隐 藏了平台特定的硬件细节,例如高速缓存、I/0总线、中断等等。 系统支持的PnP硬件总线驱动程序,在PnP管理器的合作下对HAL组件提供了类似的功 能。这就是说,PnP管理器与每一个PnP硬件总线驱动程序合作,提供特定类型I/0总线 的平台硬件和系统软件之间的接口 PnP管理器创建一个设备树,它的节点代表系统中所有的设备,包括总线和连在总线上的 设备。对于每一个设备,PnP管理器维护两个列表:一个是设备可以使用的硬件资源表, 另一个是设备实际占用的硬件资源表。设备驱动程序辅助PnP管理器创建这些列表,这些 列表被保存在注册表中。一旦在系统中增添或删除设备,PnP管理器有必要重新分配资 ,并更新列表 1.3.3永远抢占优先和永远中断 内核组件确定什么时候依照下列优先级调度标准之一来运行一段特定的代码: 针对线程的内核定义的运行时优先级 系统中每一个线程都被分配了一个优先级属性。通常,系统中的大多数线程拥有可变 的优先级属性:它们是总是抢占优先的,并且当前在同一优先级上的线程被轮询调 度。系统中的一些线程拥有实时优先属性:这些对时间要求苛刻的线程可以被拥有更 高实时优先级的线程抢占,直到它们释放控制 无论拥有什么优先级属性,系统中的任何线程在硬件和某种软件中断发生时被抢占 内核定义的中断请求级(IRL),在给定平台上被赋予特定的中断向量 内核也区分硬件和软件中断的优先次序,使得一些内核模式代码可以在更高的IRL上 运行。从而使得这些代码,包括大多数驱动程序,比系统中所有的线程拥有更高的优 先级。 一段内核模式代码在特定的IRQL上执行,这个IRQL定义了它的硬件优先级。内核模 式代码是总是可中断的:一个带有更高IRL值的中断可能在任何时候发生,从而导致 拥有更高IRL的另一段内核模式代码被处理器立即执行。换句话说,当一段代码在给 定的IRQL上运行时,内核屏蔽微处理器上所有小于等于当前IRQL值的中断向量。 通常,线程运行在 PASSIVW LEVEL IRQL上:没有中断向量被屏蔽。软件中断被赋予相对较 低的IRQL值( APC LEVEL、 DISPATCH LEVEL、或针对内核调试 WAKE LEVEL)。设备中断拥7 例如,在一个热插拔的 RAID(廉价磁盘冗余阵列)配置中,用户可以在运行的时候替换磁 盘。这样的设备被称为是硬件可配置的。它的驱动程序不能假定给定的磁盘设备会在某个 特定的位置固定。因此,为了保持可移植性,它的驱动程序一定不能包含硬编码的与机器 有关的值。 这类磁盘设备的驱动程序可以在任何给定的机器上对一个或多个文件系统提供硬件级支 持,当然这取决于用户如何对这些磁盘分区。另外,中间层驱动程序能为高层文件系统驱 动程序提供灾难恢复(镜像分区、带集、和/或卷集)支持,这样的机器通常具有充足的存 储能力。换句话说,同样的物理磁盘驱动程序能为一些机器提供对多种高层驱动程序的支 持,而对其他的机器则不能。这样的磁盘驱动程序是软件可配置的,它们都是中间层和文 件系统驱动程序,并且它们最终依赖于底层设备和/或即插即用(PnP)硬件总线驱动程 序。 Windows NT/2000 HAL 组件被实现成一个动态连接库,它负责所有的硬件层、平台特定支 持,包括内核模式驱动程序在内,系统中的其他任何组件都需要它的支持。HAL 输出的例 程提供了平台硬件与包括所有驱动程序在内的系统软件组件之间的一个接口,这些例程隐 藏了平台特定的硬件细节,例如高速缓存、I/O 总线、中断等等。 系统支持的 PnP 硬件总线驱动程序,在 PnP 管理器的合作下对 HAL 组件提供了类似的功 能。这就是说,PnP 管理器与每一个 PnP 硬件总线驱动程序合作,提供特定类型 I/O 总线 的平台硬件和系统软件之间的接口。 PnP 管理器创建一个设备树,它的节点代表系统中所有的设备,包括总线和连在总线上的 设备。对于每一个设备,PnP 管理器维护两个列表:一个是设备可以使用的硬件资源表, 另一个是设备实际占用的硬件资源表。设备驱动程序辅助 PnP 管理器创建这些列表,这些 列表被保存在注册表中。一旦在系统中增添或删除设备,PnP 管理器有必要重新分配资 源,并更新列表。 1.3.3 永远抢占优先和永远中断 内核组件确定什么时候依照下列优先级调度标准之一来运行一段特定的代码: ▪ 针对线程的内核定义的运行时优先级 系统中每一个线程都被分配了一个优先级属性。通常,系统中的大多数线程拥有可变 的优先级属性:它们是总是抢占优先的,并且当前在同一优先级上的线程被轮询调 度。系统中的一些线程拥有实时优先属性:这些对时间要求苛刻的线程可以被拥有更 高实时优先级的线程抢占,直到它们释放控制。 无论拥有什么优先级属性,系统中的任何线程在硬件和某种软件中断发生时被抢占。 ▪ 内核定义的中断请求级(IRQL),在给定平台上被赋予特定的中断向量 内核也区分硬件和软件中断的优先次序,使得一些内核模式代码可以在更高的 IRQL 上 运行。从而使得这些代码,包括大多数驱动程序,比系统中所有的线程拥有更高的优 先级。 一段内核模式代码在特定的 IRQL 上执行,这个 IRQL 定义了它的硬件优先级。内核模 式代码是总是可中断的:一个带有更高 IRQL 值的中断可能在任何时候发生,从而导致 拥有更高 IRQL 的另一段内核模式代码被处理器立即执行。换句话说,当一段代码在给 定的 IRQL 上运行时,内核屏蔽微处理器上所有小于等于当前 IRQL 值的中断向量。 通常,线程运行在 PASSIVW_LEVEL IRQL 上:没有中断向量被屏蔽。软件中断被赋予相对较 低的 IRQL 值(APC_LEVEL、DISPATCH_LEVEL、或针对内核调试 WAKE_LEVEL)。设备中断拥
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有