X86 IVT和IDT的区别是什么?

X86 IVT和IDT的区别是什么?,x86,interrupt,X86,Interrupt,在Linux系统上,中断向量表(IVT)和中断描述符表(IDT)之间有什么区别?IVT仅在实模式下有效,IDT在保护模式下有效 在x86体系结构上,中断向量表(IVT)是一个表 指定中使用的所有256个中断处理程序的地址 实模式 中断描述符表(IDT)特定于I386 建筑学它是与实际模式对应的受保护模式 中断向量表(IVT),说明中断服务的位置 例行程序(ISR)位于 这与Linux无关。这是CPU的结构,操作系统对其进行初始化以处理中断和异常。在实寻址模式下,该结构仅包含ISR的地址。这种格式

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

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

在x86体系结构上,中断向量表(IVT)是一个表 指定中使用的所有256个中断处理程序的地址 实模式

中断描述符表(IDT)特定于I386 建筑学它是与实际模式对应的受保护模式 中断向量表(IVT),说明中断服务的位置 例行程序(ISR)位于


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


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

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

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