Linux中断

1. 通用中断处理程序执行过程:

1)获取栈中保存的上下文数据;

2)根据中断号找到描述该中断的结构体 struct irq_desc

3)进行中断处理

        1》 进入顶半部,hard irq

         2》进入底半部,soft irq

         3》恢复中断执行前的上下文

 

2. 中断上下部的原因:

内核在处理中断请求时要求在单位时间内处理尽可能多的中断,也就是说要求处理中断的吞吐率要尽可能地大。这就要求中断处理函数中的代码尽可能地短小,而且不能有耗时的操作。

上半部:handler函数 --- 接收和响应中断请求

下半部机制:软中断、Tasklet、工作队列 -- 处理中断的业务逻辑

下半部和上半部最大的区别是下半部可中断,而上半部却不可中断。

 

3. 工作队列和tasklet

工作队列的使用方法和tasklet非常相似

     但:tasklet运行于中断上下文

            工作队列运行于进程上下文

            tasklet处理函数中不能睡眠,而工作队列处理函数中允许睡眠

 

4. 软中断

软中断一般是“可延迟函数”的总称,它不能睡眠,不能阻塞,它处于中断上下文,不能进程切换,软中断不能被自己打断,只能被硬件中断打断(上半部),可以并发的运行在多个CPU上。所以软中断必须设计成可重入的函数,因此也需要自旋锁来保护其数据结构

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值