设备树学习(二十六、番外篇-中断子系统之CMWQ概述[2])
一、前言
一种新的机制出现的原因往往是为了解决实际的问题,虽然linux kernel中已经提供了workqueue的机制,那么为何还要引入CMWQ(Concurrency Managed Workqueue)呢?也就是说:旧的workqueue机制存在什么样的问题?在新的cmwq又是如何解决这些问题的呢?它接口是如何呈现的呢(驱动工程师最关心这个了)?如何兼容旧的驱动呢?本文希望可以解开这些谜题。
本文的代码来自linux kernel 4.18.4。
二、为何需要CMWQ?
内核中很多场景需要异步执行环境(在驱动中尤其常见),这时候,我们需要定义一个work(执行哪一个函数)并挂入workqueue。处理该work的线程叫做worker,不断的处理队列中的work,当处理完毕后则休眠,队列中有work的时候就醒来处理,如此周而复始。一切看起来比较完美,问题出在哪里呢?
(1)内核线程数量太多。如果没有足够的内核知识,程序员有可能会错误的使用workqueue机制,从而导致这个机制被玩坏。例如明明可以使用default workqueue,偏偏自己创建属于自己的workqueue,这样一来,对于那些比较大型的系统(CPU个数比较多),很可能内核启动结束后就耗尽了PID space(default最大值是65535),这种情况下,你让user space的程序情何以堪?虽然default最大值是可以修改的,从而扩大PID space来解决这个问题,不过系统太多的task会对整体
设备树学习(二十六、番外篇-中断子系统之CMWQ概述[2])相关推荐
- 设备树学习(十七、番外篇-中断子系统之内核对中断控制器的解析)
一.介绍 关于中断的初始化我们从start_kernel函数开始 head_common.Sb start_kernel(void);....local_irq_disable(); /* 关中断 * ...
- 设备树学习(二十三、番外篇-中断子系统之softirq)
既然开始学了,那么还是一次把中断的所有知识都系统的学一下.刚好有蜗窝大神的博客做指引. http://www.wowotech.net/irq_subsystem/soft-irq.html 一.前言 ...
- 设备树学习(十八、番外篇-中断子系统之初始化一个中断控制器)
一.前言 上一篇写到,使用设备树的情况下,对所有的中断控制器进行了检索,提取到一个链表中.并对这些中断控制器中所谓的父中断控制器进行检索,并按照等级一次初始化.本文就以一种常见的中断控制器VIC的初始 ...
- 设备树学习(二十二、番外篇-中断子系统之驱动申请API)
本文继续参照蜗窝大神的文档,采用4.19内核的代码学习,同时会有自己的一些举例和部分代码分析 http://www.wowotech.net/sort/irq_subsystem 一.前言 本文主要的 ...
- 设备树学习(十五、番外篇-中断子系统之IRQ Domain介绍)
之前的文章分析过没使用设备树时,中断是如何初始化的 https://blog.csdn.net/qq_16777851/article/details/82556519 用一句话总结就是,启动过程,通 ...
- 设备树学习(二十五、番外篇-中断子系统之workqueue[1])
本文参考蜗窝大神的中断系列教程 http://www.wowotech.net/irq_subsystem/workqueue.html 一.前言 在许多情况下,需要异步流程执行上下文,而workqu ...
- C1认证学习二十六(基础选择器)
C1认证学习二十六(基础选择器) 任务背景 CSS选择器是CSS规则的一部分,用来指定需要设置的样式的HTML元素,通过选择器可以实现CSS对HTML元素一对一或者一对多或者多对一的控制了啦. 任务目 ...
- 知识图谱论文阅读(八)【转】推荐系统遇上深度学习(二十六)--知识图谱与推荐系统结合之DKN模型原理及实现
学习的博客: 推荐系统遇上深度学习(二十六)–知识图谱与推荐系统结合之DKN模型原理及实现 知识图谱特征学习的模型分类汇总 知识图谱嵌入(KGE):方法和应用的综述 论文: Knowledge Gra ...
- PostCSS自学笔记(二)【番外篇二】
图解PostCSS的插件执行顺序 文章其实是一系列的早就写完了. 才发现忘了发在SegmentFault上面, 最早发布于https://gitee.com/janking/Inf... 这次我继续研 ...
最新文章
- MVP Summit 2008 照片纪实(二)- 旧金山,Google总部和Stanford大学
- 什么叫大地高_续航8折不存在,北汽新能源EX5实力演绎什么叫高续航SUV!
- asp.net 图片 上传 打水印 高质量缩略图
- windows下利用_popen,_wopen创建管道进行系统命令输出数据
- mysqlbinlog工具_mysqlbinlog命令详解 Part 1-实验环境准备
- gmat阅读.html,GMAT阅读长难句50句+参考译文.pdf
- python机器学习预测_使用Python和机器学习预测未来的股市趋势
- MATLAB图片的保存与导出
- 三星Galaxy S11+电池谍照曝光:5000mAh超大容量 5G 不虚
- 10-Python入门学习-函数的对象与嵌套、名称空间与作用域、闭包函数
- flex 3 学习小结2
- Java 2实用教程(第五版)
- UE4 C++ Base64编解码
- CISCO 2811 路由器配置命令全集
- 双线性插值bilinear interpolation
- 和计算机相关的英文名字女孩,简单好听寓意好的英文名字女孩
- 《赋能》的读后感作文2800字
- 【ABC算法】人工蜂群算法原理及代码
- HXN-xh电池升压芯片,适用于干电池,锂电池电路
- 详解eNSP中Trunk端口和Access端口收发数据的区别
热门文章
- 【GPLT】L2-014 列车调度
- LDA在资讯推荐的应用
- python积木编程软件_最新海龟编辑器(Python编辑器)v0.6.1 官方版下载地址电脑版-锐品软件...
- taro框架props解构jsx标签,不渲染的问题
- 缠中说禅问题:关于缠论多义性应用及线段类上涨级别认定的问题
- 3DREP6C-2X/16EG24N9K4/M三通比例减压阀配置放大器
- AOEO×小红书,新国货品牌的爆红逻辑
- OSGi-Equinox
- 圣诞节主题网页如何设计?
- ubuntu 使用chown修改文件所有者