Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在为 x86 编写一个内核(使用 qemu 模拟)作为一个学校项目,我遇到了奇怪的问题。即使我在 eflags 寄存器中设置了中断标志,我仍然没有收到任何时钟中断(我使用 qemu info register 命令检查,我看到 eflag=0x292 这意味着它已设置)。
准确地说,当我在用户模式下运行自旋测试(while(1); 程序)时,我得到一个时钟中断,但在那之后,它停止了,qemu 似乎没有模拟更多!它发生在其他人身上吗?是否有另一种可以影响中断的机制?有人有线索吗? 谢。
显然在 x86 中,您必须在每次中断后确认时钟中断。即,必须在每次时钟中断后向lapic 发送确认。
如果您期待来自 RTC 的中断,您必须首先通过读取 REG_C(CMOS 寄存器 0x0C)来确认先前的中断。