什么进idle进程,cpu 为什么会执行idle进程空转?
的有关信息介绍如下:
每一个 CPU 核心都会有一个 idle 进程,idle 进程是当系统没有调度 CPU 资源的时候,会进入 idle 进程,而 idle 进程的作用就是不使用 CPU,以此达到省电的目的。
在ARM64架构中,当CPU Idle时,会调用WFI指令(wait for interrupt),关掉CPU的Clock以便降低功耗,当有外设中断触发时,CPU又会恢复回来。
cpuidle core 是 cpuidle framework 的核心模块,负责抽象出 cpuidle device、cpuidle driver 和 cpuidle governor 三个实体,如下所示:
cpuidle core 抽象出了 cpuidle device、cpuidle driver 和 cpuidle governor 三个数据结构。
好文推荐:
字节终面:CPU 是如何读写内存的?
全网最牛Linux内核分析--Intel CPU体系结构
一文让你读懂Linux五大模块内核源码,内核整体架构设计(超详细)
嵌入式前景真的好吗?那有点悬!
一文教你如何使用GDB+Qemu调试Linux内核
Linux内核必读五本书籍(强烈推荐)
全网独一无二Linux内核Makefle系统文件详解(一)(纯文字代码)
带你深度了解Linux内核架构和工作原理!
如何读懂GDB底层实现原理(从这几点入手~)
一文彻底理解Memory barrier(内存屏障)
一篇文带你搞懂,虚拟内存、内存分页、分段、段页式内存管理(超详细)
针对每个CPU核都对应一个struct cpuidle_device结构,主要字段介绍如下
对应的注册接口是 cpuidle_register_device。
cpuidle driver用于驱动一个或多个CPU核,关键字段描述如下:
对应的注册接口是 cpuidle_register_driver。
governor 结构主要提供不同的回调函数,最终由 menu_governor 填充,主要字段如下:
对应的注册接口是 cpuidle_register_governor。
我们先看下设备和驱动的注册过程:
注册之后便将设备和驱动建立起连接关系了,最终 cpuidle framework 的用户便可通过接口来调用下层的接口,进而完成具体的硬件操作。
下面看下 CPU 进入 idle 状态的流程图:
可以看出,最终是通过 PSCI 来实现 CPU 的 suspend。
PSCI, Power State Coordination Interface,由ARM定义的电源管理接口规范,通常由Firmware来实现,而Linux系统可以通过smc/hvc指令来进入不同的Exception Level,进而调用对应的实现。
PSCI 支持如下功能:
每个功能和ATF之间的调用接口如下所示:
- - 内核技术中文网 - 构建全国最权威的内核技术交流分享论坛 (0voice.com)
转载地址:深究CPU 进入 IDLE 都做了啥? - 圈点 - 内核技术中文网 - 构建全国最权威的内核技术交流分享论坛 (0voice.com)



