win10家庭版— 专业的win10家庭版系统下载及资源分享平台

雨林木风 深度技术 萝卜家园 番茄花园 电脑公司

当前位置主页 > Win10家庭版教程 >

Windows 2000/XP的中断调度

时间:2017-01-06 08:09来源: 本站整理

  1.中断类型和优先级

  由于不同的处理器能识别不同的中断号和中断类型,因此,先由Windows 2000/XP的中断调度器将中断级映射到有操作系统识别的中断请求级(Interrupt Request Level IRQL)的标准集上。这一组内核维护的IRQL是可以移植的,如果处理器具有特殊的与中断相关的特性(如第二时钟),则可以增加可移植的IRQL。IRQL将按照优先级排列中断,并按照优先级顺序服务中断,较高优先级中断抢占较低优先级中断服务。

  图1显示了X86体系结构上可移植IRQL的映射。IRQL从高到低,直到设备级都是为硬件中断保留的,Dispatch/DPC和APC中断是内核和设备驱动程序产生的软件中断,并不是真正的中断级,在该级上运行普通线程,并允许发生所有中断。

  每一个处理器都有一个IRQL设置,其俏随着操作系统代码的执行而改变,决定了该处理器可以接收哪些中断。IRQL也被用于同步访问核心数据结构。当核心态线程运行时,它可以提高或降低处理器的IRQU如图2所示,如果中断源髙于当前的IRQL设置,则响应中断;否则该中断将被屏蔽,处理器不会响应该中断,直到一个正在执行的线程降低了IRQL。

  核心态根据它要做的事情来提高或降低它所使用的处理器的IRQL,例如,当中断产生时,陷阱处理程序提高处理器的IRQL直到与中断事件所指定的IRQL相同。这就提高了所有等于或低于此丨RQL的中断(仅在这个处理器上),确保正在服务于该中断的处理器不会被同级或较低级的中断抢先。被屏蔽的中断将被另一个处理器处理或阻挡,直到IRQL降低。由于改变处理器的IRQL对操作系统具有十分重要的影响,所以,它只能在核心态下改变,用户态线程无权改变1KQU

  2.中断处理

  当中断产生时,陷阱处理程序将保存计算机运行程序的状态,然后禁用中断并调用中断调度程序。中断调度程序立刻提高处理器的IRQL到中断源的级别,以便使得在中断服务过程中屏蔽等于和低于当前中断源级別的其他中断。然后重新启用中断,以使高优先级的中断仍然能够得到服务。

  Windows 2000/XP使用中断分配表(Interrupt Dispatch Table,IDT)来查找处理特定中断的例程。中断源的IRQL作为表的索引,表的入口指向中断处理例程,如图3所示。

  在x86系统中,IDT是处理器控制区(Processing Control Region,PCR)指向的硬件结构,有的系统用软件实现。PCR和它的扩展——处理器控制块PRCB,包拈了系统中各种处理器的状态信息。内核和硬件抽象层HAL使用该信息来执行体系结构特定的操作和机器特定的操作。这些信息包括:当前运行线程、选定下一个运行的线程、处理器的中断级等。

  在x86的体系结构中,中断控制器可以支持256个中断行,但是特定机器可以支持的中断行数量仍旧依赖于具体的中断控制器设计,大多数x86PC的中断控制器使用16个中断行。中断实际上进入了中断控制器的某一行。中断控制器依次在单个行上中断处理器。一旦处理器被中断,它将询问控制器以获得中断向量。处理器利用此中断向量索引进入IDT并将控制交给适当的中断服务例程。

  在中断服务例程执行之后,中断调度程序将降低处理器的IRQL到该中断发生前的级别,然后加载保存的机器状态。被中断的线程将从它停止的位置继续执行。在内核降低了IRQL后,被封锁的低优先级中断就可能出现。在这种情况下,内核将重复以上过程来处理新的中断。

  每个处理器都有单独的IDT,这样,不同的处理器就可以运行不同的中断服务例程ISR。在多处理器系统中,每个处理器都可以收到吋钟中断,但只有一个处理器在响应该中断吋更新系统时钟。然而所有处理器都使用该中断来测量线程的时间片,并在时间片结朿后启动线程调度。同样的,某些系统配置可能要求特殊的处理器处理某一设备中断。

我要分享:

本站发布的win10家庭版系统与电脑软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件!

如侵犯到您的权益,请及时通知我们,我们会及时处理。

Copyright @ 2020 win10家庭版 xp6000.com