关于linux工作队列和软中断的一些区别疑问

yuanchen9663 2016-05-22 12:24:05
我看linux内核设计与实现关于linux工作队列和软中断有一些疑问,软中断会在ksoftirqd中检查和执行,ksoftirqd是一个内核线程,而工作队列里面也是任务交给一个内核线程(默认是event),那请问这有什么区别?还有一点是:在ksoftirqd中调用do_softirq函数,此时应该是运行在进程上下文吧?感觉跟工作队列很像。
...全文
1200 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weifenghai 2016-10-14
  • 打赏
  • 举报
回复
软中断正常情况下是在中断上下文中处理的,如中断处理程序返回时,只有当软中断过多时,才在软中断处理程序中激活ksoftirqd内核线程处理。linux的策略是中断的的后半部能及时处理就及时处理,不放到后半部去,这个及时处理的条件是处理软中断时软中断循环计数器递减到0(初值为10),即循环处理待处理软中断10次。这时对后半部的处理是在中断上下文中。如果不能及时处理,放到后半部去,这个时候由内核线程处理,处于进程上下文
Sky-yxxy 2016-10-13
  • 打赏
  • 举报
回复
同问,为什么软中断是在中断上下文中执行
yuanchen9663 2016-05-22
  • 打赏
  • 举报
回复
请大手解决一下,纠结有段时间了

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧