关中断时间过长会丢失中断?
本帖最后由 zylthinking 于 2013-01-31 15:11 编辑我怎么分析的结果是不会发生的啊;
只说 8259A, 因为只懂点这个;
中断来了,IRQ 线边缘触发, ESR 如果是 reset 状态, 则锁存, 要么已经处于锁存状态; 最终结果就是无论如何, 这个信号不会丢失;
既然不会丢失, 则无论什么时候开启中断, 都会最终发送到 CPU, 最坏的结果不过是多个中断合并成一个而已, 而这个很显然不是问题; 还有点就是阻塞其他 IRQ 线中断的及时相应, 但无论如何, 这个是不会丢失中断的啊 那不就是丢失了嘛。。所以中断关的不能太久 回复 1# zylthinking
最坏的结果不过是多个中断合并成一个而已, 而这个很显然不是问题
对于某些中断来说,比如网卡中断合并的确可以认为不是问题;如果是时钟中断呢,这显然是一个问题(虽然内核能够很好的处理时钟中断丢失)。
本帖最后由 linuxfellow 于 2013-02-01 09:19 编辑
回复 1# zylthinking
中断时间太长, 失去的不紧紧可能是下一个中断, 主要是系统的实时性或快速响应能力。通常中断优先级较高, 中断时其他任务无法运行。假如系统里有5个事件需要在1ms里做出反应, 如果某个中断时间超过1ms,这5个事件的反应时限都有可能超出, 系统的实时性就无法保证。所以长时间的中断不可取。
更何况,可能中断在执行了,相同的中断被屏蔽了,而丢失。 回复 5# hwangmif
可能中断在执行了,相同的中断被屏蔽了,而丢失
不同的中断类型还是不同的。
边缘触发中断,不会屏蔽本中断,紧跟着的第二个中断可以不丢失(通过IRQ_PENDING实现);
电平触发中断需要屏蔽本中断,所以如果中断处理过长,会导致中断丢失。
本帖最后由 mordorwww 于 2016-07-20 09:57 编辑
瀚海书香 发表于 2013-02-04 08:28 static/image/common/back.gif
回复 5# hwangmif
不同的中断类型还是不同的。
感觉好奇怪,edge中断同一个硬件中断的多次中断信号还能缓存和排队么?能排2个以上么?
而且即便是level中断,如果实现ack了再处理中断的话,也能接收新的同类中断
再说了,如果中断的处理时延要求高的话,第一个中断完成前就来了第二个中断,第二个中断的处理时间上就晚了点,也许这个中断的处理已经没有意义了
不同的中断类型还是不同的。
边缘触发中断,不会屏蔽本中断,紧跟着的第二个中断可以不丢失(通过IRQ_PENDING实现);
电平触发中断需要屏蔽本中断,所以如果中断处理过长,会导致中断丢失。
页:
[1]