【发布时间】:2011-02-26 17:47:12
【问题描述】:
这是来自维基百科...
中断描述符表 (IDT) 是 x86 使用的数据结构 实现中断的架构 向量表。 IDT 由 处理器确定正确的 响应中断和 例外...在 8086 处理器中,IDT 驻留在内存中从地址 0x0000 到 0x03ff 的固定位置...
这是来自http://www.linuxjournal.com/article/4048?page=0,1
当 start_kernel(在 /usr/src/linux/init/main.c) 被调用, 它调用 trap_init(在 /usr/src/linux/kernel/traps.c)。 trap_init 通过 宏 set_trap_gate(在 /usr/include/asm/system.h) 和 初始化中断描述符 表中所示的“偏移量 描述是”表。
我很困惑,因为这两个描述似乎对比...第一个说 IDT 与处理器相关并且独立于内核(实际上它甚至不位于内核中)。第二个说Linux内核初始化IDT并实现ISR的代码,所有ISR的代码都在内核中。
另外,当一个设备对CPU产生一个中断时,是内核还是处理器负责执行中断例程? 请向我解释一下...提前谢谢您
【问题讨论】:
标签: x86 interrupt interrupt-handling