Meh*_*dad 7 x86 assembly interrupt isr interrupt-handling
当您禁用中断时(使用clix86中的指令),究竟发生了什么?
PIC是否等待您打开中断,并在发生这种情况时触发中断?(如果是这样,它等待多长时间,如果时间'到期'会发生什么?)
中断 - 从设备的角度来看 - 是否被发送到"黑洞",没有响应?
PIC是否以某种方式告诉设备"CPU正忙"或什么?
还是会发生其他事情?
另外,你如何处理一个你不知道如何处理的中断?
有没有办法告诉PIC(或设备,如果你不知道设备是什么),"是的,我收到你的消息,但我不知道该怎么办"?
中断仍然会触发,但 CPU 不会监听。当您再次开始收听时 ( sti),信号仍然存在,并且会在第一时间生效。
PC PIC 有多个中断级别,我相信它可以为每个优先级保留一个活动中断。它会保留其中的每一项,直到CPU告诉它相应的处理完成为止。长时间禁用中断可能会破坏这一点,所以不要这样做!
负责中断的设备在等待期间不会得到任何响应——无论如何,这也是一种响应。如果它不能等待,它可能会进入某种错误状态,CPU 最终恢复时会看到该错误状态。
您只会获得已明确启用的中断,因此应该不会出现意外。打开中断的设备驱动程序最好知道如何处理它。
8259a PIC等待来自CPU的INTA信号.CPU通过将控制转移到适当的ISR来开始处理中断时发送它.哪个ISR?PIC将中断向量提供给CPU,CPU查找地址的IVT/IDT,您知道其余的.在收到INTA之前,PIC不会提供中断向量.
8259a PIC仅与I/O设备进行单向通信.他们可以告诉它他们有一个需要维修的中断.
因此,如果CPU没有响应中断,那么PIC中的所有内容都会浮出水面.但是,设备可能会随心所欲地断言然后重新断言中断请求信号.我不知道哪个.我也不知道中断服务有哪些时间要求.
如果你对来自特定来源的中断不感兴趣,你可以掩饰它,你就不会得到任何中断.如果您接受中断但不知道如何处理它,您可以告诉PIC您已经处理过它.这可能使被中断的设备处于"冻结"状态,无限期地等待服务发生.它也可能导致设备,以保持它的中断请求信号高,这将是一个问题,如果你正在服用的电平触发模式的中断 - 你会不断地得到中断.