中断top half 与 buttom half
top half 用于处理紧急事件
buttom half 用于处理非紧急事件,承接top half 接下来要处理的
buttom half 一般通过softirqs、tasklets、workqueues
软中断与硬中断的另_点区别是’软中断的处理函数必须是可重入的,
软中断的执行允许被硬中断抢占’同时Linux还允许软中断在多个CPU
核上并行执行以提升软中断的处理效率’因此软中断处理过程应该避免使用全局共享变
量(如静态变量和全局变量)’否则必须加锁来保护关键数据结构
软中断侧重于中断的处理效率’如在多核情况下软中断可并行执行; tasklet则更侧重于编
程开发的友好性,tasklet使用者无须考虑同步加锁和代码可重人等问题,但是因为tasklet本身依托于中断上下文’执行期间不能睡眠’外加
设计上的不可抢占性’导致tasklet可能引起难以预测的系统延迟’严
重的话甚至可能影响系统的整体实时性。
我们接下来介绍另—种下半部机制—工作队列’它允许睡眠’降低了下半部的开
发难度’同时也关注效率
工作队列并非没有缺点。因为工作队列本身是串行执行的’所以_旦有某个work被
阻塞’将导致该队列上其他work无法执行°因此’每个驱动的开发人员都可能会创建自
己的工作队列’进而保证自己的下半部任务能被尽快调度
Ljnux内核引人了并发可管理工作队列(ConcurrencyManaged
WOrkQueue’CMWQ)机制°CMWQ本质上是将工作队列的管理从驱动开发者手里交还
给内核’由内核来决定工作线程的创建时
标签:
linux中断
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2021-02-23 路由表的处理机制