OS如何选择中断处理程序?

时间:2014-12-16 01:41:44

标签: operating-system interrupt interrupt-handling

我已经阅读了几页有关中断处理的内容,而且我越来越对操作系统实际选择执行中断处理程序的方式感到困惑。

我读了以下内容:

  

CPU通过发出中断确认来向硬件提出这个问题('中断服务程序在哪里?'),硬件通过在数据总线上放置一个中断向量号来回答问题。 CPU使用中断向量编号来找出中断服务程序的位置。

这是其中一项,另一项包括

  1. 每个设备都有一个IRQ编码i,.e,每个设备实际上都有一个中断号,由连接设备和CPU的线路决定。然后用它来查找IDT中的处理程序
  2. 导致中断的硬件将中断号放在一个特殊的注册表中,然后由CPU读取并用作中断号来查找IDT中的处理程序
  3. 这有什么意义,哪一个实际上是正确的?

1 个答案:

答案 0 :(得分:3)

根据您使用的实际硬件,这实际上会发生很大变化。

概述如下:

  1. 特定设备中发生硬件事件。
  2. 设备在其中断线上发出信号。
  3. 中断线通常连接到中断控制器,中断控制器是决定是否向处理器发出信号的专用硬件。
  4. 中断控制器决定发信号通知处理器。
  5. 处理器切换到中断模式,并开始执行操作系统在预定义位置安装的中断处理程序。
  6. 中断处理程序询问中断控制器实际发出哪个中断线信号,告诉它哪个设备发送了中断。
  7. 中断处理程序将中断消息调度到设备驱动程序。
  8. 您正在询问步骤6和7.步骤6取决于中断控制器。一些中断控制器实际上是处理器内部的物理内部,在这种情况下,"问"只是读取正确的内存地址。有些是在总线上,在这种情况下,处理器必须取得总线的所有权,向中断控制器发出信号,并使用中断线号进行回复。

    步骤7完全由OS定义。操作系统可能有一个映射中断线的表来中断函数处理程序,并且该表可能是预定义的(通常是固定硬件布局的嵌入式系统上的情况),或者可能在启动期间确定,因为系统发现了什么设备附在它上面。