首页 文章

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

提问于
浏览
0

我已经阅读了几页有关中断处理的内容,而且我越来越感到困惑的是OS如何实际选择执行中断处理程序 .

我读了以下内容:

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

这是其中之一,其他包括在内

  • 每个设备都有一个IRQ编码i,.e,每个设备实际上有一个中断号,由连接设备和CPU的线路决定 . 然后用它来查找IDT中的处理程序
    导致中断的
  • 硬件将中断号放在一个特殊的注册表中,然后CPU读取并用作中断号来查找IDT中的处理程序

这有什么意义,哪一个是正确的?

1 回答

  • 3

    这实际上根据您使用的实际硬件而有很大差异 .

    概述如下:

    • 特定设备中发生硬件事件 .

    • 器件在其中断线上置位一个信号 .

    • 中断线通常连接到中断控制器,中断控制器是决定是否向处理器发送信号的专用硬件 .

    • 中断控制器决定向处理器发出信号 .

    • 处理器切换到中断模式,并开始执行操作系统在预定义位置安装的中断处理程序 .

    • 中断处理程序询问中断控制器实际发出哪个中断线信号,告诉它哪个设备发送了中断 .

    • 中断处理程序将中断消息调度到设备驱动程序 .

    您询问步骤6和7.步骤6取决于中断控制器 . 一些中断控制器实际上是在物理上处理器内部,在这种情况下,“询问”只是读取正确的存储器地址 . 有些是在总线上,在这种情况下,处理器必须取得总线的所有权,向中断控制器发出信号,并使用中断线号进行回复 .

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

相关问题