矢量化中断和非矢量化中断有什么不同?
我以为所有的中断都必须是向量中断...毕竟,并不是所有的中断都有一个向量编号,因此有一个特定ISR中断服务例程的向量
(ISR地址将在页表中,在4*生成中断的设备中的向量#;假设为32位地址体系结构)...
谢谢!
发布于 2011-06-29 15:35:21
请参阅here
interrupt
。
发布于 2011-06-29 15:49:36
每当中断发生时,CPU都需要执行一个处理程序,它基本上是一个处理中断的子例程。现在,CPU如何访问这个处理程序取决于中断的类型。
在矢量化中断的情况下,向量号指定处理程序的地址,因此CPU跳转到该地址并执行处理程序。
另一方面,非矢量化中断通常由I/O (慢)设备引发。在这种情况下,总是有一个特定的处理程序需要执行,因此不需要传递处理程序地址的向量
发布于 2020-02-01 09:09:41
矢量化中断的重要特征是设备本身提供中断矢量地址。
对于非矢量化中断,使用相同中断请求例程的所有设备将把控制转移到相同的位置,并且中断服务例程必须找出哪些可能的设备实际上正在中断。
通过向量中断,设备告诉中断机制它的向量地址是什么。矢量地址对应于OS (或设备驱动器)已经写入适当中断服务例程的地址的存储位置。通常,每个设备都有自己的向量地址,因此“哪个设备正在中断”的决定是微不足道的。
术语有点混乱,因为中断服务例程地址表通常被称为“中断向量表”,但该术语既用于矢量化中断(中断设备识别矢量中的槽),也用于非矢量中断(中断请求行对应于矢量中的槽)。
https://stackoverflow.com/questions/6517146
复制相似问题