【问题标题】:Interrupt handle中断句柄
【发布时间】:2021-11-01 06:39:43
【问题描述】:

在>中提到,当中断处理程序运行时,相应的IRQ行会被暂时忽略。所以我想知道为什么IRQ线需要被忽略,要保护什么?谢谢。

换句话说,为什么“在相应的中断处理程序终止之前不应该发生中断”。

【问题讨论】:

    标签: linux interrupt-handling


    【解决方案1】:

    如果是电平触发中断,则至少在处理程序清除其源之前必须忽略它,否则中断会重复发生,直到堆栈溢出。并且不管电平触发还是边沿触发,在特定的中断处理程序仍在处理中断时重新进入通常是没有好处的;无论如何,实际的中断程序(上半部分)应该很短。另见Top halves and bottom halves concept clarification

    【讨论】:

    • 感谢您的回答,让我添加我的问题。例如,在带有 8259A 的 x86 中。当设备(名为 A)引发 IRQ 时,PIC 将向 CPU 发送信号,然后 CPU 确认并执行处理程序。但是在执行这个handler的时候,为什么同样的中断会被8259A(PIC)屏蔽掉呢?
    • 哦,非常感谢。我了解“水平/边缘触发”的影响。
    • 假设一个慢速中断处理程序处理从串行线路传入的字符。如果在处理字符时再次触发中断,字符可能会丢失原始/正确序列,从而中断通信。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    相关资源
    最近更新 更多