Linux解决长时间占用CPU资源的方法(底半部)

问题:我的中断处理函数就是执行的时间非常长,怎么办?        

         如果中断处理函数长时间的占用CPU资源,会导致别的任务无法获取CPU资源,影响系统的并发能力和响应能力。

甚至如果在中断处理函数中进行休眠操作,最终导致linux系统处于僵死状态。


解决:

linux内核为了提供系统的并发能力和响应能力,解决中断处理函数长时间的占有CPU的情况,linux内核将中断处理

函数进行划分,划分为两部分:顶半部,底半部。


顶半部:本质上还是之前的中断处理函数,其中完成的内容相对比较紧急,耗时较短,遵循linux内核要求中断处理函数实行的速度要快这个原则,一旦中断发生以后,内核首先执行顶半部内容,但是这个顶半部占用CPU的时间非常短,也就保证其他任务可以及时获取到CPU的资源。其他复杂的事情可以放在底半部去完成。顶半部还需要登记底半部,告诉CPU我的中断还需要一些比较耗时的内容在将来(空闲时)要去你去完成!顶半部不可被中断!

底半部:完成之前中断处理函数中比较耗时,不紧急的事情,可以被别的中断(硬件中断和软件中断,甚至是进程)打断!底半部的执行会在CPU空闲的时候去完成!


底半部的实现机制:
1.tasklet
实现基于软中断,并且能够指定优先级!运行中断上下文中,tasklet对应的延时函数不能进行休眠动作!
2.工作队列
运行进程上下文中,所以对应的延时函数能够进行休眠操作。
3.软中断
软中断对应的延时函数能够同时运行在多个CPU上,而tasklet不行;
软中断对应的延时函数必须设计为可重入!
软中断的实现不能以模块的形式动态加载和卸载!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值