向量中断和非向量中断有什么区别?
我认为所有中断都必须是向量中断...毕竟并非所有中断都有一个向量编号,因此不是一个具有特定 ISR [中断服务例程] 的向量
(ISR 地址将在页表中,位于 4 * 产生中断的设备中的向量 #;假设是 32 位地址架构)....
谢谢!
向量中断和非向量中断有什么区别?
我认为所有中断都必须是向量中断...毕竟并非所有中断都有一个向量编号,因此不是一个具有特定 ISR [中断服务例程] 的向量
(ISR 地址将在页表中,位于 4 * 产生中断的设备中的向量 #;假设是 32 位地址架构)....
谢谢!
见这里:
每当中断发生时,CPU需要执行一个Handler,它基本上是一个处理中断的子程序。现在 CPU 如何访问这个处理程序取决于中断的类型。
在 Vectored 中断的情况下,向量号指定了 Handler 的地址,因此 CPU 会跳转到该地址并执行 handler。
另一方面,非向量中断通常由 I/O(慢速)设备引发。在这种情况下,总是有一个特定的处理程序需要执行,因此不需要传递处理程序地址的向量
向量中断的重要特征是设备本身提供中断向量地址。
对于非向量中断,使用相同中断请求例程的所有设备将控制转移到相同位置,并且中断服务例程将必须确定哪些可能的设备实际上正在中断。
使用向量中断,设备告诉中断机制它的向量地址是什么。向量地址对应于操作系统(或设备驱动程序)已写入适当中断服务例程的地址的存储位置。通常每个设备都有自己的向量地址,因此“哪个设备正在中断”的决定是微不足道的。
术语有点混乱,因为中断服务程序地址表通常称为“中断向量表”,但该术语用于向量中断(中断设备标识向量中的插槽)和非向量中断(中断请求线对应于向量中的一个槽)。
当外部设备中断 CPU(中断请求)时,CPU 必须执行中断服务程序来服务该中断。如果处理器的内部控制电路产生一个CALL到一个预定的内存位置,即中断服务程序的起始地址,那么这个地址就称为向量地址,这样的中断称为向量中断。