IVT和IDT有什么区别?

时间:2012-07-18 11:18:34

标签: x86 interrupt

在Linux系统上,中断向量表(IVT)和中断描述符表(IDT)有什么区别?

3 个答案:

答案 0 :(得分:10)

这与Linux无关。这是CPU的结构,OS初始化以处理中断和异常。在实际寻址模式中,结构仅包含ISR的地址。这种格式称为IVT。在保护模式下,结构更复杂,称为IDT。英特尔或AMD的CPU手册将告诉您有关中断处理的所有详细信息。

现代操作系统几乎完全在保护模式下运行,因此使用IDT。只有在操作系统启动时才需要IVT,因为这是在实模式下进行的。

答案 1 :(得分:4)

IVT仅在实模式下有效且IDT在受保护模式下有效

  

在x86架构上,中断向量表(IVT)是一个表   它指定了所有256个中断处理程序的地址   实模式[more...]

     

中断描述符表(IDT)特定于I386   建筑。它是实模式的保护模式   中断向量表(IVT)告诉中断服务的位置   例程(ISR)位于。 [more...]

答案 2 :(得分:3)

实模式中的中断处理 在实模式中,较低的1K存储器保持称为中断向量表(IVT)的数据结构。此表中名义上有256个条目。 (自80286以来,IVT不需要有256个条目或从物理地址0开始.IVT的基址和地址以及长度通过查看I **中断描述符表寄存器**来确定。)每个条目包含指向中断服务程序的远指针。任何类型的中断都通过该表路由到相应的中断服务程序。处理器索引该表中的中断号;推送堆栈上的当前CS,IP和标志;并调用IVT中指定的far指针。处理程序处理中断,然后执行IRET指令将控制权返回到处理器在中断时执行的位置。

保护模式下的中断处理 在保护模式下,中断的处理方式与实模式相似。中断描述符表(IDT)执行IVT在实模式下的操作。 IDT由一个称为门的8字节段描述符数组组成。中断描述符表寄存器(ID​​TR)保存基址和IDT的限制。 IDT必须存在于物理内存中,并且永远不应该换出虚拟内存。这是因为如果在IDT被换出时发生中断,处理器将生成异常,要求IDT获取处理此异常的处理程序,依此类推,直到系统崩溃。 IDT中的门可以包括三种类型:中断门,陷阱门和任务门。我们不会详述陷阱和任务门的细节。有关详细信息,请参阅英特尔处理器文档。

http://www.reverse-engineering.info/SystemHooking/hooksoft.htm