assembly - 在 x86 上执行 cli 后丢失中断会发生什么?

标签 assembly linux-kernel operating-system x86

在我使用 cli 命令之后和在我使用 sti 再次启用它们之前发送到处理器的中断会发生什么?

最佳答案

正如您评论中的几个人所说,中断确实不是 迷路。CLI之间发生的中断和 STI一旦您使用 STI 重新启用中断,就会得到服务。操作说明。

要理解这种行为,您必须知道中断是如何传送到处理器的。引用英特尔开发人员手册:

Asserting the INTR pin signals the processor that an external interrupt has occurred. The processor reads from the system bus the interrupt vector number provided by an external interrupt controller, such as an 8259A



关键是INTR引脚由 8259A PIC 置位,直到您进入
中断服务程序,确认中断。因此,当您禁用中断时,您只是在指示处理器忽略 INTR别针。
当您重新启用中断时,您将不再忽略 INTR针和
处理器立即开始处理中断。

免责声明:这是一种遗留行为,但足以解释。

关于assembly - 在 x86 上执行 cli 后丢失中断会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22439040/

相关文章:

assembly - 跳转目标与指令pc 0x400014高4位不同

performance - 6 种基本算术运算的相对循环时间是多少?

linux - 减去ESP或RSP寄存器会产生哪个异常? (堆栈增长)

linux - 当我从使用 seq_file 实现的/proc 读取时无限循环

sockets - 'EAGAIN' 或 'EWOULDBLOCK' 之间的区别

assembly - 如何在 ARM 汇编中屏蔽字节?

c - 填充 skb 中的 header 字段

memory - 操作系统主内存碎片

windows - 如何检查 32 位或 64 位 Internet Explorer 10 和 11?

c++ - 跨平台汇编 ((x64 || x86) && (Microsoft x64 || SystemV))