2011-12-07 72 views
1

我想知道程序在执行过程中如何看到和使用中断。我已经读过关于中断的级别,边沿,混合和消息类型的信息,并且设备发送脉冲来指示中断,但程序如何看到中断?或者程序中可以看到中断? 感谢您的任何帮助程序执行和中断

+0

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

回答

1

一般来说,中断的发生会导致处理器停止正在做的事情,记住它停止的地方并转到一段特定的代码,该代码会以某种方式反应它。无论处理器此刻还在做什么,硬件都会一直检查中断。所以它转到了一段特殊的代码,即所谓的interrupt handler,并在完成后返回到之前的操作。被中断的程序没有注意到任何事情。

中断处理程序所在的地址取决于处理器体系结构和中断类型。有时它需要位于内存中的固定点,其地址在处理器的数据表中给出。通常在内存的固定地址有一个称为intrrupt vector table的特殊数组,它存储处理不同类型中断的过程的地址。

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

+0

处理器如何查看中断? – MNM

+1

硬件。需要中断处理器的外设将直接或间接地将处理器芯片上的引脚拉低,从而触发处理器进入其中断确认总线协议。中断确认协议是依赖于设备的。例如,它可能要求中断外设发送一个中断号码,该中断号码可被转换为向量地址,以便为中断外设调用正确的处理程序。许多处理器系列还具有内部中断源,例如。内存管理器硬件,内核间通信。 –

1

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