我正在编写一个在保护模式下运行的小型操作系统。我想要加载自定义中断描述符表,我不知道从哪里开始。我在the 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.
问题是,如果我正在加载自定义中断表,那么我是否必须为所有这些中断提供条目?
此外,维基表示BIOS将IRQ0-7映射到中断8-15。如果是这种情况,IRQ中断不会与保留中断发生冲突吗?
我有没有得到的东西?在一个单独的表或其他什么中断0-31?有人请指出我正确的方向,并清理一切。
答案 0 :(得分:2)
当它显示don't use those [interrupts 0-31] for APIs or IRQs
时,表示您不应将它们用于除保留的例外之外的功能。您确实需要为这些中断定义处理程序,以便在发生异常时对其进行处理。有关具有中断号和描述的异常列表,请参阅OSDev's exception page。
当处理器启动时,它处于实模式。在此模式下,异常较少,因此保留较少的中断来处理它们。只要处理器处于实模式,就可以安全地使用中断8-15进行IRQ。在保护模式下启用中断之前,需要将IRQ重新映射到不同的中断。有关如何执行此操作的信息,请参阅Initialization section(可编程中断控制器)页面的OSDev's PIC。
答案 1 :(得分:0)
CPU保留并使用前32个(0-31)中断作为例外,因此不要将这些中断用于API或IRQ。
这是关于世界卫生组织可以发出的中断。 0-31用于CPU本身的事件(内部,例如页面错误,除以零......),其他用于外部事件(硬件启动,例如键盘按压,pci中断等)。 这与IDT无关。您应该在表格中提供所有中断。