我试图了解 do_softirq 何时被调用
a) 从中断返回路径b) 当softirqd守护进程被唤醒时。
Q1。还有哪些其他地方调用它。
第二季度。 raise_softirq 是否调用 do_softirq ?
现在softirq总是在中断上下文中运行,所以softirqd守护进程也在中断上下文中运行?但 softirqd 被调度程序拾取。
第三季度。在网络负载较高的情况下,内核如何限制软中断。 CPU如何处理用户进程。假设播放流媒体视频。
A1。 do_softirq
仅从 __local_bh_enable
和 netif_rx_ni
调用。
A2。不是直接的方式。 raise_softirq
唤醒运行 run_ksoftirqd
函数的内核线程 ksoftirqd
,该函数依次调用 __do_softirq()
-> __local_bh_enable()
-> do_softirq()
。
软中断不在中断上下文中运行,因为软中断的目的是将大部分中断处理移出中断上下文。 softirqd 线程在内核上下文中运行。
A3。 softirqd 线程由同一个调度器管理,因此在调度方面与用户线程是平等的。
我是一名优秀的程序员,十分优秀!