我想知道一个程序在执行时如何看到和使用中断。我已经了解了中断的电平,边沿,混合和消息类型,并且设备发送脉冲来发出中断信号,但程序如何看到中断?或者程序中断是否可见? 感谢您对此的任何帮助
答案 0 :(得分:1)
取决于操作系统,如果有的话。在我们最熟悉的通用“桌面”操作系统上,用户模式程序永远不必直接处理硬件中断。来自键盘,鼠标,磁盘,NIC等外围设备的中断由驱动程序处理。通常,'program'中的一个线程进行读/写请求API调用,并且在请求完成之前调用不会返回 - 这是程序到达硬件最近的。在内核中,调用线程被阻塞,直到被寻址的驱动程序发出请求I / O已完成的信号。
答案 1 :(得分:1)
通常,发生中断会导致处理器停止正在执行的操作,记住它停止的位置并转到一段特殊的代码,它会以某种方式对其作出反应。无论处理器目前还在做什么,硬件都会一直检查中断。所以它转到了特殊的代码片段,即所谓的interrupt handler,在它完成后,它返回到之前所做的事情。被打断的程序没有注意到任何事情。
中断处理程序所在的地址取决于处理器体系结构和中断类型。有时它需要位于内存中的固定点,其地址在处理器的数据表中给出。通常在内存中的固定地址处有一个名为intrrupt vector table的特殊数组,它存储处理不同类型中断的过程的地址。
在PC或任何其他略高级的电子设备上,中断处理程序和中断向量表是操作系统的一部分。除非您正在编写操作系统或编程嵌入式设备,否则您根本不需要受到中断的困扰。