文库网
首页 > 小知识

系统机制之中断分发 深入解析windows操作系统 学习笔记(3)

2023-04-08 来源:文库网
这份驻留在中断对象中的代码调用实际的中断分发器,通常是内核的KilnterruptDispatch 或KiChainedDispatch例程,并且将指向该中断对象的指针传递给它。KilnterruptDispatch这个 例程适用于那些仅注册了一个中断对象的中断向量,而KiChainedDispatch适用于那些可在多 个中断对象之间共享的中断向量。中断对象中所包含的信息使得这第二个分发器例程能够找 到并正确地调用设备驱动程序所提供的ISR。
中断对象也保存了与该中断相关联的IRQL ,所以KilnterruptDispatch或者 KiChainedDispatch能在调用ISR之前将IRQL提升到正确的级别上,在ISR返回之后再降低IRQL。 此两步骤处理过程是必需的,因为中断的初始分发是由硬件来完成的,所以,在初始分发时 是没有办法传递中断对象指针的(或者任何此类的其他参数)。在多处理器系统上,内核会为 每个CPU分配一个中断对象,并对它初始化,使该CPU上的本地APIC能够接受特定的中断。
在x64 Windows系统上,内核优化了中断的分发过程,其做法是,使用一些特殊的例程, 通过忽略一些不必要的功能来节省处理器的指令开销,比如:KilnterruptDispatchNoLock,此 例程用于那些’‘没有相关联的、由内核来管理的自旋锁(此自旋锁往往被驱动程序用来同步 它们的ISR)”的中断;KilnterruptDispatchNoEOl,此例程用于那些已经将APIC编程为“Auto- EOK自动结束中断,Auto-End-of-Interrupt) ”的中断——因为中断控制器将自动发送EOI信号, 内核不需要额外的代码来自行完成EOL工作。最后,专门针对性能中断或性能剖析中断,使用 KilnterruptDispatchLBControl处理器,它支持现代处理器所提供的最后分支控制MSR (Last Branch Control MSR)o此寄存器使内核在跟踪模式下可以跟踪/保存分支指令;在中断过程中, 这一信息会被丢失,因为在常规的线程寄存器环境中,并没有存放此信息,所以,必须要加入 特殊的代码来保存此信息。
例如,HAL的性能中断和性能剖析中断使用了这一功能,而其他 的HAL中断例程则利用了 “无锁”分发代码,因为HAL并不要求内核同步其ISR。
另一个内核中断处理器是它用于那些要求保存浮点状态的中断。内 核模式代码通常不允许使用浮点(MMX、SSE、3DNow!)操作,因为这些浮点寄存器在环境 切换时并不被保存;然而,与此不同的是,ISR可能需要用到这些寄存器(比如显卡的ISR执 行一个快速绘制操作)。驱动程序在连接一个中断时,可以将FloatingSave参数设置为TRUE, 从而要求内核使用此浮点分发例程,浮点分发例程将会保存浮点寄存器。(然而,这会极大地 增加中断的延迟。)注意,浮点分发例程仅在32位系统上被支持。
9.Windows和实时处理过程
对时间期限的需求,无论是硬的还是软的,都体现了实时环境的特征。硬实时系统(例如 核电站控制系统)中有一些时间限制是系统必须要满足的,以避免诸如财产或者生命损失之 类的灾难性失败。在软实时系统(例如汽车的燃料节约优化系统)中,有一些时间限制尽管是 可以错过的,但及时性仍然是一个期望的特征。在实时系统中,计算机有传感器输入设备和 控制输出设备。实时计算机系统的设计者必须要清楚,从输入设备产生中断的时间点,到该 设备的驱动程序能够控制输出设备来响应此中断的时间点之间,在最差情形下其延迟该是多 少。在进行最差情形分析时,必须要考虑操作系统引入的延迟,以及应用程序和设备驱动程 序所强加的延迟。
因为Windows并不以任何一种可控的方式对设备IRQ进行优先处理,而且用户应用程序只 能在处理器的IRQL为被动级别的时候执行,所以,Windows往往并不适合用作实时操作系统。 最终决定“最差情形延迟”的是系统的设备和设备驱动程序,而非Windows。当实时系统的设 计者使用市场上的硬件产品时,这就成了一个问题。设计者难以确定市场上每一个设备的ISR 或者DPC在最差情形下需要多长时间。即使经过了测试,设计者也不能保证实际系统在特殊 情形下不会漏掉某个重要的时间期限。而且,系统的DPC和ISR可能引入的所有延迟的总和通 常会远超时间敏感系统的容忍度。
虽然许多类型的嵌入式系统(比如,打印机和车载计算机)有实时性需求,但是,Windows Embedded Standard 7并没有实时性特征。它只是Windows 7的一个版本,这个版本有可能生成 —个小印迹(footprint)的Windows7版本,适合于运行在资源受限的设备上。例如,一个没有 联网功能的设备将省略掉所有与网络有关的Windows?组件,包括网络管理工具,以及适配器 和协议栈设备驱动程序。
猜你喜欢