linux 如何设置待机时间_linux 休眠功能介绍(转)

本文详细介绍了Linux系统的休眠过程,包括冻结用户态和内核态进程、外设休眠以及唤醒流程。通过读写`/sys/power/state`进入不同休眠模式,如standby。休眠时,系统会保存所有进程上下文,调用设备的suspend回调,并在唤醒时按相反顺序恢复。了解这一机制有助于优化Linux系统的电源管理。
摘要由CSDN通过智能技术生成

在Linux中,休眠主要分三个主要的步骤:

冻结用户态进程和内核态任务

调用注册的设备的suspend的回调函数

顺序是按照注册顺序

休眠核心设备和使CPU进入休眠态冻结进程是内核把进程列表中所有的进程的状态都设置为停止,并且保存下所有进程的上下文.

当这些进程被解冻的时候,他们是不知道自己被冻结过的,只是简单的继续执行.如何让Linux进入休眠呢?用户可以通过读写sys文件/sys

/power/state 是实现控制系统进入休眠. 比如

# echo standby > /sys/power/state命令系统进入休眠. 也可以使用

# cat /sys/power/state来得到内核支持哪几种休眠方式.

Linux Suspend 的流程

相关的文件:

你可以通过访问 Linux内核网站 来得到源代码,下面是文件的路径:

linux_soruce/kernel/power/main.c

linux_source/kernel/arch/xxx/mach-xxx/pm.c

linux_source/driver/base/power/main.c

接下来让我们详细的看一下Linux是怎么休眠/唤醒的. Let 's going to see how these

happens.

用户对于/sys/power/state 的读写会调用到 main.c中的state_store(), 用户可以写入 const

char * const pm_state[] 中定义的字符串, 比如"mem", "standby".

然后state_store()会调用enter_state(), 它首先会检查一些状态参数,然后同步文件系统.

下面是代码:

**

* enter_state - Do common work of entering low-power state.

* @state: pm_state structure for state we're entering.

*

* Make sure we're the only ones trying to enter a sleep state.

Fail

* if someone has beat us to it, since we don't want anything weird

to

* happen when we wake up.

* Then, do the setup for suspend, enter the state, an

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值