【问题标题】:When to use Interrupt Gate or Trap Gate?何时使用中断门或陷阱门?
【发布时间】:2011-03-27 09:53:12
【问题描述】:

正如英特尔手册所示,中断门和陷阱门都可用于访问处理程序例程。有些异常甚至与中断共享向量号。我想知道当 CPU 检测到这样的共享向量时,CPU 怎么知道它代表异常还是中断?

我对以下几件事的逻辑有点困惑:

  • IDT 中门类型的决定

  • 判断向量代表异常还是中断

哪个决定哪个?

我希望我说清楚了......

更新 1

感谢 nos 的回复。你的意思是我必须告诉 CPU 哪个向量代表中断或陷阱?我知道 CPU 在中断和陷阱方面对 EFLAGS[IF] 的处理方式不同,CPU 怎么知道如何做出这个决定? CPU 是否根据向量对应的 IDT 条目的类型字段做出决策?或者更确切地说,这取决于系统是如何连接的,我们必须根据它设置 IDT 条目的类型?即类型文件完全是对我们的说明还是对 CPU 的必要性?

还有一个相关问题:The difference between Call Gate, Interrupt Gate, Trap Gate?

【问题讨论】:

标签: assembly x86 operating-system intel interrupted-exception


【解决方案1】:

对于给定的 ISR,您必须针对什么是中断门以及什么是陷阱门对 CPU 进行编程。

这是由 IDT 条目中的位 40-43 设置的。信息在这里:http://wiki.osdev.org/Interrupt_Descriptor_Table

【讨论】:

  • 感谢您的回复。你的意思是我必须告诉 CPU 哪个向量代表中断或陷阱?我知道 CPU 在中断和陷阱方面对 EFLAGS[IF] 的处理方式不同,CPU 怎么知道如何做出这个决定? CPU 是否根据向量对应的 IDT 条目的类型字段做出决策?或者更确切地说,这取决于系统是如何连接的,我们必须根据它设置 IDT 条目的类型?即类型文件完全是对我们的说明还是对 CPU 的强制要求?
  • 是的,你必须告诉系统它是陷阱还是中断。我相信唯一真正的区别是中断会在运行时自动为您禁用中断,而陷阱不会,这意味着您通常希望使用中断门来处理硬件中断。 IDT 中的条目是使用的,因此您可以将其设置为陷阱门并让它处理硬件中断。
猜你喜欢
  • 1970-01-01
  • 2013-07-15
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 2018-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多