zoukankan      html  css  js  c++  java
  • [内核]Takslet和Workqueue的应用场景

    转自:http://blog.chinaunix.net/uid-20382483-id-4077101.html

    tasklet

    Workqueue

    处于atomic context,不能sleep

    不处于atomic context,可以sleep

    处于中断上下文,OS不可以进行进程调度

    处于进程上下文,OS可以进行进程调度

    运行调度它们的同一个CPU上

    默认同一个CPU上

    不能指定确定时间进行调度

    不能指定确定时间进行调度或者指定至少延时一个确定时间后调度

    只能交给ksoftirqd/0

    可以提交给events/0,也可以提交给自定义的workqueue

    Tasklet函数带参数

    Work函数不带参数

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

    • [极少量任务]:必须立即进行紧急处理的极少量任务放入在中断的顶半部中,此时屏蔽了与自己同类型的中断,由于任务量少,所以可以迅速不受打扰地处理完紧急任务。
    • [中等数量任务]:需要较少时间的中等数量的急迫任务放在tasklet底半部中。此时不会屏蔽任何中断(包括与自己的顶半部同类型的中断),所以不影响顶半部对紧急事务的处理;同时又不会进行用户进程调度,从而保证了自己急迫任务得以迅速完成。
    • [大量任务]:需要较多时间且并不急迫(允许被操作系统剥夺运行权)的大量任务放在workqueue中。此时操作系统会尽量快速处理完这个任务,但如果任务量太大,期间操作系统也会有机会调度别的用户进程运行,从而保证不会因为这个任务需要运行时间将其它用户进程无法进行。
    • 可能引起睡眠的任务放在workqueue中,因为在workqueue中睡眠是安全的
     
  • 相关阅读:
    Java经典编程题50道之四十一
    Java经典编程题50道之四十
    Java经典编程题50道之三十九
    Java经典编程题50道之三十八
    Java经典编程题50道之三十七
    Java经典编程题50道之三十六
    Java经典编程题50道之三十五
    前端学习之路之CSS (一)
    Numpy 01
    Python3 urllib 与 Python2 urllib的变化
  • 原文地址:https://www.cnblogs.com/aaronLinux/p/6021388.html
Copyright © 2011-2022 走看看