Linux device drivers学习笔记(2)——关于tasklet和workqueue

关于tasklet和workqueue

a)        tasklet在软件中断上下文中运行,所有tasklet的代码都必须是原子的。Workqueue函数在一个特殊内核进程的上下文运行,因此,wordqueue具有更好的灵活性,尤其是workqueue可以休眠。

b)        tasklet会在很短的时间段内很快执行,并且以原子方式执行。而workqueue函数可具有更长的延迟并且不必原子化。


Tasklet与workqueue的不同应用环境总结如下:

a)        必须立即进行紧急处理的极少量任务放入在中断的顶半部中,此时屏蔽了与自己同类型的中断,由于任务量少,所以可以迅速不受打扰地处理完紧急任务。

b)        需要较少时间的中等数量的急迫任务放在tasklet中。此时不会屏蔽任何中断(包括与自己的顶半部同类型的中断),所以不影响顶半部对紧急事务的处理;同时又不会进行用户进程调度,从而保证了自己急迫任务得以迅速完成。

c)        需要较多时间且并不急迫(允许被操作系统剥夺运行权)的大量任务放在workqueue中。此时操作系统会尽量快速处理完这个任务,但如果任务量太大,期间操作系统也会有机会调度别的用户进程运行,从而保证不会因为这个任务需要运行时间将其它用户进程无法进行。

d)        可能引起睡眠的任务放在workqueue中。因为在workqueue中睡眠是安全的。

综合使用tasklet和workqueue,需要将所做的任务做较细致的划分,将紧急的,紧迫的和并不急迫的分别采用不同的策略。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值