前言
待机、睡眠与休眠的区别?Android开发者官网当中提到“idle states”,该如何理解,这个状态会对设备及我们的程序造成何种影响?进入Doze模式中的idle状态,我们的程序还能运行吗?手机睡眠之后,为何我们写Alarm程序、来电显示程序依旧会生效?
如果你也有以上疑问,那么本文会对你解开疑惑有一定的帮助
ACPI简介
要理解第一个问题,得先从ACPI(高级配置与电源接口)说起,ACPI是一种规范(包含软件与硬件),用来供操作系统应用程序管理所有电源接口。
ACPI将计算机系统的状态划分为四个全局状态(G0-G3),共7个状态,其中G0对应S0;G1将低功耗状态细分为四个状态,对应S1-S4;G2、G3代表关机状态分别对应S5、S6。
ACPI StateDescription
S0正常工作状态
S1CPU与RAM供电正常,但CPU不执行指令
S2比S1更深的一个睡眠层次,这种模式通常不采用
S3挂起到内存
S4挂起到硬盘
S5Soft Off,CPU、外设等断电,但电源依旧会为部分极低耗设备供电
S6Mechanical Off,全部断电
这里只需要对ACPI的七个状态有个大致了解即可,下一节会有具体的例子来说明各个状态。
Linux系统电源状态
在Linux操作系统中,将电源划分为如下几个状态:
ACPIStateLinux State	Description
S0On(on)Working
S1Standby(standby)CPU and RAM are powered but not executed
S2------------
S3Suspend to RAM(mem)CPU is Off,RAM is powered and the running content is saved to RAM
S4Suspend to Disk(disk)All content is saved to Disk and power down
S5ShutdownShutdown the system
On:正常工作状态
STR(Suspend to RAM):
挂起到内存,俗称待机、睡眠(