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文件) 。
