在 Linux 内核中,软中断 (Softirq) 是实现下半部处理的核心机制。它主要用于处理那些对实时性有要求、但不像硬中断那样极其紧急的任务。软中断允许内核将非关键操作推迟到中断开启的状态下执行,从而提高吞吐量。软中断是一种为了平衡中断响应速度和任务处理开销而设计的下半部中断机制。
当硬件中断(如网卡收包)发生时,内核会进入硬中断(上半部中断)。由于硬中断会关闭 CPU 响应,如果处理时间过长,会导致系统丢包或卡顿。为了避免这样的事情发生,硬中断只做最紧迫的事(如读取寄存器、清除状态、触发软中断)。如果处理耗时较长、非原子性的逻辑(如协议栈解析、定时器回调),Linux会把任务延迟到软中断执行。 软中断的执行流程为:
如欲了解详细过程,可线上阅读《基于arm的Linux操作系统引导详解——通往嵌入式的核心旅程》一书:
GitHub:
hailiu88.github.io/-ARM-Linux-…