Linux kernel pm之我理解

博主分享了自己研读Linux Power Management (PM) 源码和文档的心得体会,特别提到了kernel/power和driver/base/power两个关键目录在PM架构中的作用。通过这次学习,博主对Linux内核的休眠与唤醒机制有了更深入的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近期搜了很多有关Linux PM的相关资料,但是总感觉叙述晦涩难懂,一来是由于对kernel的理解还未到高度,二来确实手头事情太多,没有办法沉下心来阅读code,今天晚上偷了个闲,仔细读了一遍有关pm的技术文档与source code,颇有心得,记于此。


开始理解一下Linux PM的一些基本概念, sleep, hibernate 两个概念,根据文档上说,sleep是 suspend to mem, hibernate是 suspend to disk, 我理解sleep比如我们的手机长期没有active后,自动锁屏,进入sleep状态;而hibernate则是关机状态,将当前在memory中的image,存放在disk之中。文中还说sleep的细节要比hibernate要来的简单,进入suspend的过程是: prepare---suspend---suspend_noirq; wakeup过程是 resume_noirq----resume---complete,具体调用过程也比较复杂,英文文档,我很烂的英文也就记得不是那么清楚,大概就是按照device topology来逐个调用device的suspend,其中suspend是从device-->class-->bus 这个过程调用,而resume是从bus-->class>device这个过程调用,而hibernate过程更加复杂,不过暂时不影响我们理解Linux pm框架。


就构架上理解,pm主要有两个目录,一是 kernel/power下的code, 还有一份是 driver/base/power下的code。


driver/base/power下主要是pm的driver实现,说到这个,我想到了driver这个概念,一般来说,driver是指对某个或某类device的控制,但是有很多很多的driver并不是对hw的device进行控制,而是去用driver来封装一些内核接口,或者内核数据,实现一些特定的功能,而并不是一定需要控制特别的device,可以是一个虚拟的device,其实真是的hw device 也就是抽象成为一个数据结构来进行管理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值