我想知道程序在执行时如何看到和使用中断。我已经阅读了有关中断的级别、边缘、混合和消息类型的信息,并且设备会发送一个脉冲来发出中断信号,但是程序如何看到该中断?还是程序根本就可以看到中断?感谢您对此的任何帮助
问问题
266 次
2 回答
2
通常,中断的发生会导致处理器停止执行它正在执行的操作,记住它停止的位置并转到一段特殊的代码,该代码会以某种方式对其做出反应。硬件始终检查中断,而不管处理器目前正在做什么。所以它进入了一段特殊的代码,即所谓的中断处理程序,在它完成之后,它返回到它之前正在做的事情。被中断的程序没有注意到任何东西。
中断处理程序所在的地址取决于处理器架构和中断类型。有时它需要位于内存中的固定点,其地址在处理器的数据表中给出。大多数情况下,内存中的固定地址处有一个特殊的数组,称为中断向量表,它存储处理不同类型中断的过程的地址。
在 PC 或任何其他稍微先进的电子设备上,中断处理程序和中断向量表是操作系统的一部分。除非您正在编写操作系统或对嵌入式设备进行编程,否则您根本不需要被中断所困扰。
于 2011-12-07T15:40:58.607 回答
1
取决于操作系统(如果有)。在我们最熟悉的通用“桌面”操作系统上,用户模式程序永远不必直接处理硬件中断。来自键盘、鼠标、磁盘、网卡等外围设备的中断由驱动程序处理。通常,“程序”中的线程会发出读/写请求 API 调用,并且在请求完成之前调用不会返回 - 这是程序最接近硬件的地方。在内核中,调用线程被阻塞,直到寻址的驱动程序发出请求的 I/O 已完成的信号。
于 2011-12-07T15:19:30.880 回答