加载中...

硬件中断处理期间通常会屏蔽同类中断,处理程序若耗时过长会导致丢中断与延迟升高。Linux 因此把中断处理拆成两段:上半部只做最紧急的工作,其余延后到下半部执行。
softirq(软中断)是静态定义、可在多个 CPU 上并发执行的机制,网络收发(NET_RX/NET_TX)、定时器等核心路径都基于它;tasklet 构建在 softirq 之上,使用更简单,同一 tasklet 不会并发执行;工作队列(workqueue)则运行在内核线程上下文中,允许睡眠,适合可能阻塞的任务。
当软中断负载过高时,内核会唤醒每 CPU 的 ksoftirqd 线程在进程上下文中继续处理,避免软中断长期霸占 CPU。
该机制在响应及时性与吞吐之间取得平衡,是 Linux 网络栈高性能的重要基础。

登录 后参与讨论
暂无讨论,来发表第一条评论吧