嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第六天-工作队列和等待队列的区别 (物联技术666)

链接:https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd=1688
提取码:1688

       work queue是一种bottom half,中断处理的后半程,强调的是动态的概念,即work是重点,而queue是其次。

       wait queue是一种「任务队列」,可以把一些进程放在上面睡眠等待某个事件,强调静态多一些,重点在queue上,即它就是一个queue,这个queue如何调度,什么时候调度并不重要。

对这2个容易混淆的队列做简单概念上的区别,怎么用?

       等待队列在内核中有很多用途,尤其适合用于中断处理,进程同步及定时。我们在这里只说,进程经常必须等待某些事件的发生。例如,等待一个磁盘操作的终止,等待释放系统资源,或者等待时间经过固定的间隔。

       等待队列实现了在事件上的条件等待,希望等待特定事件的进程把自己放进合适的等待队列,并放弃控制权。因此。等待队列表示一组睡眠的进程,当某一条件为真时,由内核唤醒它们。

       等待队列由循环链表实现,其元素包括指向进程描述符的指针。每个等待队列都有一个等待队列头,等待队列头是一个类型为wait_queue_head_t的数据结构。

等待队列链表的每个元素代表一个睡眠进程,该进程等待某一事件的发生,它的描述符地址存放在task字段中。然而,要唤醒等待队列中所有的进程有时并不方便。例如,如果两个或多个进程在等待互斥访问某一个要释放的资源,仅唤醒等待队列中一个才有意义。这个进程占有资源,而其他进程继续睡眠可以用DECLARE_WAIT_QUEUE_HEAD(name)宏定义一个新的等待队列,该宏静态地声明和初始化名为name的等待队列头变量。 init_waitqueue_head()函数用于初始化已动态分配的wait queue head变量

      等待队列可以通过DECLARE_WAITQUEUE()静态创建,也可以用init_waitqueue_head()动态创建。进程把自己放入等待队列并设置成不可执行状态。

       工作队列,workqueue,它允许内核代码来请求在将来某个时间调用一个函数。用来处理不是很紧急事件的回调方式处理方法.工作队列的作用就是把工作推后,交由一个内核线程去执行,更直接的说就是如果您写了一个函数,而您现在不想马上执行它,您想在将来某个时刻去执行它,那您用工作队列准没错

      如果需要用一个可以重新调度的实体来执行你的下半部处理,也应该使用工作队列。它是唯一能在进程上下文运行的下半部实现的机制,也只有它才可以睡眠。这意味着在需要获得大量的内存时、在需要获取信号量时,在需要执行阻塞式的I/O操作时,它都会非常有用

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-22 23:38:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-22 23:38:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-22 23:38:01       82 阅读
  4. Python语言-面向对象

    2024-02-22 23:38:01       91 阅读

热门阅读

  1. P5719 【深基4.例3】分类平均

    2024-02-22 23:38:01       54 阅读
  2. 开源软件的影响力

    2024-02-22 23:38:01       48 阅读
  3. linux命令--pidof

    2024-02-22 23:38:01       48 阅读
  4. springboot接收base64文件并上传

    2024-02-22 23:38:01       40 阅读
  5. 【达梦数据库】查看pesg回滚段信息的视图和SQL

    2024-02-22 23:38:01       53 阅读
  6. 数学术语之源——插值(interpolation)

    2024-02-22 23:38:01       56 阅读
  7. C和C++编译器标识符

    2024-02-22 23:38:01       57 阅读
  8. MQL语言实现单元测试

    2024-02-22 23:38:01       43 阅读
  9. 机器学习系列-机器学习范式

    2024-02-22 23:38:01       42 阅读
  10. RK3568 speex speexdsp降噪算法移植

    2024-02-22 23:38:01       60 阅读
  11. windows 10 和 11 的3个杀招软件

    2024-02-22 23:38:01       64 阅读
  12. Luogu P6175 无向图的最小环问题 题解 Floyd

    2024-02-22 23:38:01       58 阅读