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