【问题标题】:Program execution and interrupts程序执行和中断
【发布时间】:2011-12-07 15:01:27
【问题描述】:

我想知道程序在执行时如何查看和使用中断。我已经阅读了有关中断的级别、边缘、混合和消息类型的信息,并且设备会发送一个脉冲来发出中断信号,但是程序如何看到该中断?还是程序根本就可以看到中断? 感谢您对此的任何帮助

【问题讨论】:

  • 我们谈论的是在 PC 或微控制器上运行的程序吗?

标签: architecture system execution interrupt-handling


【解决方案1】:

一般来说,中断的发生会导致处理器停止执行它正在执行的操作,记住它停止的位置并转到一段特殊的代码,该代码会以某种方式对其做出反应。硬件始终检查中断,无论处理器目前正在做什么。所以它转到了一段特殊的代码,即所谓的interrupt handler,在它完成之后,它会返回到它之前正在做的事情。被中断的程序没有注意到任何东西。

中断处理程序所在的地址取决于处理器架构和中断类型。有时它需要位于内存中的固定点,其地址在处理器的数据表中给出。大多数情况下,内存中的固定地址处有一个特殊的数组intrrupt vector table,它存储处理不同类型中断的过程的地址。

在 PC 或任何其他稍微先进的电子设备上,中断处理程序和中断向量表是操作系统的一部分。除非您正在编写操作系统或对嵌入式设备进行编程,否则您根本不需要被中断所困扰。

【讨论】:

  • 处理器如何看到中断?
  • 硬件。需要中断处理器的外围设备将直接或间接地将处理器芯片上的引脚拉低,从而触发处理器进入其中断确认总线协议。中断确认协议是设备相关的。例如,它可能要求中断外设发送一个可以转换为向量地址的中断号,以便为中断外设调用正确的处理程序。许多处理器系列也有内部中断源,例如。内存管理器硬件,内核间通信。
【解决方案2】:

取决于操作系统(如果有)。在我们最熟悉的通用“桌面”操作系统上,用户模式程序永远不必直接处理硬件中断。来自键盘、鼠标、磁盘、网卡等外围设备的中断由驱动程序处理。通常,“程序”中的线程会发出读/写请求 API 调用,并且在请求完成之前调用不会返回 - 这是程序最接近硬件的地方。在内核中,调用线程被阻塞,直到被寻址的驱动程序发出请求的 I/O 已完成的信号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    相关资源
    最近更新 更多