Win、Linux和Mac的电源状态分别是关机、休眠还是开机?
摘要:对于每一种操作系统的各种电源状态,有些人分不清各种电源状态(Power States)或者叫做“S-states”(Sleep states),所以我想记录一下其细微的差别。 这些东西统称为ACPI电源管理(ACPI Power Manag
对于每一种操作系统的各种电源状态,有些人分不清各种电源状态(Power States)或者叫做“S-states”(Sleep states),所以我想记录一下其细微的差别。
这些东西统称为ACPI电源管理(ACPI Power Management)
状态表格
状态
中文名
英文名
作用
上下文保留
搭载现状
S0
工作状态
Working State
系统正常运行,执行操作
完全保留
通用实现
S0ix
现代待机/活动空闲状态
Modern Standby
在维持系统上下文和网络连接的前提下,最大化空闲时段能效,支持后台任务执行
完整保留系统上下文,内存内容保持
Windows 10/11(CS,Connected Standby) macOS(Power Nap) Linux(部分支持)
S1
通电待机
Power On Suspend/POS
在保持所有硬件通电的情况在停止CPU时钟(HLT状态),实现低延迟唤醒的早期节能方案,维持供电
完全保留
已淘汰(Obsolete)
S2
处理器断电待机
CPU Power Down
完全切断CPU和缓存电源,同时维持内存供电和平衡功耗与恢复速度的方案
CPU核心与缓存完全断电,上下文丢失;系统时钟停止;内存维持自刷新,内容保留;芯片组部分断电,寄存器丢失;唤醒时需要固件重新配置CPU,初始化电源域
未实现(Not Implemented),被S3代替
S3
挂起到内存/睡眠
Suspend-to-RAM(STR)/Standby
保持内存自刷新同时切断其他所有组件电源实现低功耗状态保存
仅内存内容保留,其余丢失,需BIOS/UEFI初始化整个平台并恢复OS上下文
通用实现 传统笔记本默认睡眠状态(关盖后进入该状态);Linux默认挂起方案;需固件支持以正确重新初始化设备
S4
挂起到磁盘/休眠
Suspend-to-Disk(STD)/Hibernate
将系统完整状态(包括内存映像)保存至非易失性存储后彻底断电,实现零功耗数据保持
完整保留,OS将所有物理内存内容写入休眠文件(Windows:hiberfil.sys/Linux:swap partition),随后进入S5等效断电状态;仅RTC电路和唤醒逻辑(电源按钮/USB/RTC闹钟),维持微功耗,恢复时从磁盘读回内存;CPU和外设无上下文需保留(冷启动路径)
通用实现 Windows默认隐藏(需手动启用);Linux需配置不小于物理内存的swap空间;需固件支持resume向量
S5
软关机/真关机
Soft-Off
通过软件指令切断主电源平面,保持待机电源以支持唤醒事件(电源按钮/RTC/网络唤醒),区别于物理断电
无保留,系统从固件初始化开始执行
通用实现 与机械断电(G3/切断供电)区分在于保持待机电压;支持Wake-on-LAN/RTC唤醒
tips
G3(Mechanical off)与G2(Soft-off)
G3为拔掉电源和电池,而G2等同于S5
不同操作系统的小区别
Windows
Windows8/10/11默认是快速启动(Fast Startup)。这是一种混合关机机制(Hybrid Shutdown),实质上是S4休眠的变体,看起来是关机,实则是“部分休眠”
而关闭了快速启动的关机也叫就是S5——“真关机”(Full Shutdown)。
Restart则是完整的S5$\rightarrow$S0流程(完全重置)。
过程:用户点击“关机”时,系统关闭用户会话并注销,但将内核会话(驱动、系统状态)写入磁盘休眠文件hiberfil.sys,随后切断主电源。
恢复:下次开机,从磁盘直接加载内核映像到内存,跳过传统S5所需的完整硬件初始化(POST)和驱动加载过程。
功耗:与S5相同(主电源切断,仅待机电源维持),但文件系统处于锁定状态(NTFS元数据未完全同步)。
兼容性风险:在双系统环境下,Windows“关机”后进入Linux可能触发NTFS分区只读挂载或数据损坏,因为系统并未真正重置文件系统状态。同样,这也意味着,只有重启才能充值状态而非关机。
Liunx对比:poweroff始终执行完整的S5关机流程,无快速启动机制,因此冷启动时间较长但系统状态完全重置。
macOS
Apple实施的是Safe Sleep,一种混合电源管理策略,同时实现S3与S4的保险机制。
过程:
S3挂起到内存:维持DDR内存供电与自刷新,保持CPU寄存器和系统上下文活跃
S4预写入:在后台将完整内存映像非阻塞式写入SSD(sleepimage文件) 。
状态切换逻辑:
标准唤醒:若电池未耗尽,从S3内存状态秒速恢复
安全恢复:若睡眠期间电池耗尽或硬件断电,开机时检测到内存校验失败,自动从磁盘sleepimage恢复系统状态(类似标准休眠,数据零丢失)
功耗与延迟:维持S3的待机功耗(1-5W)但是获得了S4的数据安全性,唤醒延迟取决于触发路径
与ACPI标准的关系:属于S0ix低功耗空闲状态的扩展实现,通过固件(Boot ROM)支持resume向量切换,非标准ACPI S3/S4切换
tips
Apple Silicon差异:
M系列芯片的Safe Sleep实现和Intel Mac不同(ARM架构使用不同的固件机制)
Linux
Linux的可配置性:Linux 的电源状态可以通过/sys/power/mem_sleep切换:
s2idle = S0ix(现代待机)
deep= S3(传统睡眠)
说明Linux不只能S3。
S4的磁盘要求:Windows的hiberfil.sys需要内存大小的40-75%(压缩后);Linux需要swap$\geq$RAM
总结
对于这些电源状态,我们可以理解小新上紫屏Linux Kernel Panic是源于ACPI(DSDT/SSDT)仅针对Windows电源管理路径验证,Linux内核在S3状态切换时触发时序错误。
相对的,Win和mac较为友好。
但是Win的关机看似是真关机其实是“假关机”,它并没有传统的S5过程。这样对于新手来说,必须使用重启而不能关机再开机确实让人有点意想不到。这违反直觉的设计,正是新手困惑的来源。
mac则在安全性稳定性和易用性上非常突出。
