3

我正在编写一个在保护模式下运行的小型操作系统。我到了要加载自定义中断描述符表的地步,但我不知道从哪里开始。我已经阅读了 OS Dev wiki上的一些内容,但有一些问题需要回答。

在 OS Dev wiki 上,它说the first 32 (0-31) interrupts are reserved and used by the CPU, as exceptions, so don't use those for APIs or IRQs.问题是,如果我正在加载我的自定义中断表,我不需要为所有这些中断提供条目吗?

此外,wiki 声明 BIOS 将 IRQ0-7 映射到中断 8-15。如果是这种情况,IRQ中断不会与保留中断冲突吗?

有什么我没有得到的吗?中断 0-31 是在单独的表中还是什么?有人请指点我正确的方向并把事情弄清楚。

4

2 回答 2

2

当它说 时don't use those [interrupts 0-31] for APIs or IRQs,这意味着您不应该将它们用于除了它们保留的异常之外的功能。您确实需要为这些中断定义处理程序,以便在发生异常时处理它们。请参阅OSDev 的异常页面以获取异常列表及其中断号和描述。

当处理器启动时,它处于实模式。在这种模式下,异常较少,因此保留较少的中断来处理它们。只要处理器处于实模式,就可以安全地将中断 8-15 用于 IRQ。在保护模式下启用中断之前,您需要将 IRQ 重新映射到不同的中断。有关如何执行此操作的信息,请参阅OSDev 的 PIC (可编程中断控制器)页面的初始化部分

于 2011-07-25T23:24:16.797 回答
0

前 32 (0-31) 个中断被 CPU 保留和使用,作为例外,所以不要将它们用于 API 或 IRQ。

这是关于WHO可以发出中断的。0-31 用于 CPU 本身的事件(内部,例如页面错误,除以零......),其他用于外部事件(硬件启动,例如键盘按下,pci 中断等)。这与 IDT 无关。您应该提供表中的所有中断。

于 2011-07-25T23:25:03.490 回答