ksoftirqd在中断或进程上下文中的下半部分?

时间:2014-10-20 04:48:21

标签: linux-kernel interrupt-handling

我一直在仔细阅读Robert Love撰写的名为Linux Kernel Development的书。

根据我的理解,softirqs和tasklet在中断上下文中运行。此外, ksoftirqd 是一个在进程上下文中运行的内核线程。因此,我发现使用kso​​ftirqd(进程上下文)来运行softirqs(中断上下文)非常令人费解并且很难。

1 个答案:

答案 0 :(得分:2)

在阅读本书时,我脑子里有类似的问题,这里有一个链接应该澄清一些事情:refer to this papar

  

“ksoftirqd是作为一组线程实现的,每个线程都是   限制为仅在特定CPU上运行。它们是预定的(在a   非常高的优先级)由正常的任务调度程序。这个实现   具有执行下半部分所花费的时间的优点   占系统任务。因此,用户可以看到   机器中断处理过载,也许   采取补救措施。

     

虽然现在正在进程中完成工作,而不是   下半部分上下文,ksoftirqd建立一个相同的环境   在下半部分中找到的。具体来说,它执行   softirq处理程序启用本地中断和下半部分   在当地残疾。作为下半部分运行的代码不需要   改变ksoftirqd来运行它。“