Assembly 禁用中断时会发生什么情况,以及如何处理不使用的中断';我不知道怎么处理?

Assembly 禁用中断时会发生什么情况,以及如何处理不使用的中断';我不知道怎么处理?,assembly,x86,interrupt,interrupt-handling,isr,Assembly,X86,Interrupt,Interrupt Handling,Isr,当您禁用中断(使用x86中的cli指令)时,会发生什么情况 PIC是否等待您打开中断,并在中断发生时触发中断?(如果是,等待多长时间,如果时间“到期”会发生什么情况?) 从设备的角度来看,中断是否会被发送到一个“黑洞”,而没有响应 PIC是否会告诉设备“CPU正忙”或其他什么 还是发生了别的事情 另外,您如何处理不知道如何处理的中断? 有没有办法告诉PIC(或设备,如果你不知道设备是什么的话),“是的,我收到了你的消息,但我不知道该怎么办”中断仍然会触发,但CPU没有监听。当您再次开始收听时

当您禁用中断(使用x86中的
cli
指令)时,会发生什么情况

  • PIC是否等待您打开中断,并在中断发生时触发中断?(如果是,等待多长时间,如果时间“到期”会发生什么情况?)

  • 从设备的角度来看,中断是否会被发送到一个“黑洞”,而没有响应

  • PIC是否会告诉设备“CPU正忙”或其他什么

  • 还是发生了别的事情

另外,您如何处理不知道如何处理的中断?

有没有办法告诉PIC(或设备,如果你不知道设备是什么的话),“是的,我收到了你的消息,但我不知道该怎么办”

中断仍然会触发,但CPU没有监听。当您再次开始收听时(
sti
),信号仍然存在,并将在第一时间生效

PC PIC有多个中断级别,我相信它可以为每个优先级保留一个活动中断。它将保留它们中的每一个,直到CPU告诉它相应的处理完成为止。长时间禁用中断可能会破坏这一点,所以不要这样做

负责中断的设备在等待时不会得到任何响应,这是一种响应。如果它不能等待,它可能会进入一些错误状态,CPU将在它最终出现时看到这些状态


您将只得到显式启用的中断,因此不会有任何意外。打开中断的设备驱动程序更了解如何处理它。

8259a PIC等待来自CPU的INTA信号。CPU在开始处理中断时通过将控制转移到适当的ISR来发送该信息。哪个ISR?PIC将中断向量提供给CPU,CPU在IVT/IDT中查找地址,您知道其余部分。PIC在收到INTA之前不会提供中断向量

8259a PIC仅与I/O设备进行单向通信。他们可以告诉它,他们有一个需要维修的中断

因此,如果CPU不响应中断,那么PIC中的所有内容都将悬而未决。然而,设备可能会根据自己的意愿取消断言,然后重新断言中断请求信号。我不知道该怎么办。我也不知道中断服务有什么时间要求


如果您对来自特定源的中断不感兴趣,您可以屏蔽它,而不会得到任何中断。如果你接受了一个中断,但不知道如何处理它,你可以告诉PIC你已经处理了它。这可能会使中断的设备处于“冻结”状态,无限期地等待维修。它还可能导致设备将其中断请求信号保持在高电平,如果您在电平触发模式下接受中断,这将是一个问题——您将持续收到中断。

“消息”是错误的心理图像,它只是一个信号。CLI告诉处理器忽略它。当设备等待中断处理程序开始传输数据并因此重置请求时,它不会执行任何操作。在任何情况下,你都不知道如何处理中断,你也不会将PIC编程为启用IRQ。@HansPassant:啊,我明白了,谢谢!