10

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

4

3 回答 3

14

这与Linux无关。它是 CPU 的结构,操作系统对其进行初始化以处理中断和异常。在实际寻址模式中,该结构仅包含 ISR 的地址。这种格式称为 IVT。在保护模式下,结构更复杂,称为 IDT。Intel 或 AMD 的 CPU 手册将告诉您有关中断处理的所有细节。

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

于 2012-07-18T11:29:17.117 回答
6

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

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

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

于 2014-07-14T11:03:01.437 回答
4

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

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

中断描述符表 (IDT) 特定于 I386 架构。它是实模式中断向量表 (IVT) 的保护模式对应物,它告诉中断服务例程 (ISR) 的位置。[更多的...]

于 2012-07-18T11:27:08.803 回答