软中断
中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力
由于中断处理程序会打断其他进程的运行,所以,为了减少对正常进程运行调度的影响,中断处理程序就需要尽可能快地运行
Linux 将中断处理过程分成了两个阶段,也就是上半部(硬中断)和下半部(软中断):
- 上半部用来快速处理中断,它在中断禁止模式下运行,主要处理跟硬件紧密相关的或时间敏感的工作,直接处理硬件请求,特点是快速执行
- 下半部用来延迟处理上半部未完成的工作,通常以
内核线程
的方式运行,由内核触发,特点是延迟执行
查看软中断和内核线程
- /proc/softirqs 提供了软中断的运行情况;
- /proc/interrupts 提供了硬中断的运行情况;
【软中断类型】【CPU…】
同一种软中断在不同 CPU 上的分布情况,也就是同一行的内容。正常情况下,同一种中断在不同 CPU 上的累积次数应该差不多
软中断实际上是以内核线程
的方式运行的,每个 CPU 都对应一个软中断内核线程
,这个软中断内核线程就叫做ksoftirqd/CPU 编号