我一直在仔细阅读Robert Love撰写的名为Linux Kernel Development的书。
根据我的理解,softirqs和tasklet在中断上下文中运行。此外, ksoftirqd 是一个在进程上下文中运行的内核线程。因此,我发现使用ksoftirqd(进程上下文)来运行softirqs(中断上下文)非常令人费解并且很难。
答案 0 :(得分:2)
在阅读本书时,我脑子里有类似的问题,这里有一个链接应该澄清一些事情:refer to this papar
“ksoftirqd是作为一组线程实现的,每个线程都是 限制为仅在特定CPU上运行。它们是预定的(在a 非常高的优先级)由正常的任务调度程序。这个实现 具有执行下半部分所花费的时间的优点 占系统任务。因此,用户可以看到 机器中断处理过载,也许 采取补救措施。
虽然现在正在进程中完成工作,而不是 下半部分上下文,ksoftirqd建立一个相同的环境 在下半部分中找到的。具体来说,它执行 softirq处理程序启用本地中断和下半部分 在当地残疾。作为下半部分运行的代码不需要 改变ksoftirqd来运行它。“