计算机中的睡眠和休眠

电源状态基础知识

ACPI(Advanced Configuration and Power Interface),即高级配置与电源接口。这种新的能源管理可以通过诸如软件控制"开关"系统,亦可以用Modem信号唤醒和关闭系统。ACPI在运行中有以下几种模式[1]:

  • S0 正常,也就是计算机正常工作
  • S1 CPU时钟关闭。唤醒时间:0秒。
  • S2 CPU关闭。唤醒时间:0.1秒。
  • S3 除了内存外的部件都停止工作。唤醒时间:0.5秒。
  • S4 内存信息写入硬盘,所有部件停止工作。唤醒时间:30秒。(休眠状态)
  • S5 关闭。

S1、S2、S3 和 S4 都可以称为睡眠状态。处于睡眠状态的系统不会执行任何计算任务,就好像是处于关闭状态一样。然而,与真正的关闭状态 (S5) 不同,睡眠会保留内存数据(存储在内存中或磁盘上),处于睡眠状态的计算机无需重新启动操作系统即可恢复到工作状态。

下表[2,3,4]展示了这些状态的特点:

状态名称硬件状况耗电特点硬件时延硬件上下文
S0正常使用////
S1处理器时钟关闭,总线时钟停止消耗比 S0 少,比其他睡眠状态多/通常不超过两秒由硬件保留和维护的所有上下文。
S2处理器关闭。总线时钟停止;一些总线可能会断电。比S1 少,比 S3 多与 S1 类似,只是 CPU 上下文和系统缓存的内容会因为处理器断电而丢失两秒或更长时间;大于或等于 S1 的延迟CPU 上下文和系统缓存内容丢失
S3处理器关闭,主板上的某些芯片也可能关闭,系统状态保存在内存中消耗比状态 S2 少处理器已关闭,内存处于自刷新状态与 S2 几乎没有区别仅保留系统内存数据。 CPU 上下文、缓存内容和芯片组上下文丢失。
S4设备几乎全部关闭,内存中的数据(休眠文件)完整的储存于硬盘中电源关闭,电源按钮和类似设备的涓流电流除外即休眠状态,是功耗最低的睡眠状态,具有最长的唤醒延迟。为了将功耗降至最低,硬件会关闭所有设备很长,只有物理交互或定时器才能使系统恢复到工作状态没有保留在硬件中。系统在关机前会在休眠文件中写入内存映像。当操作系统被加载时,它会读取这个文件并跳转到它之前的位置。
S5完全关机////

更通俗的解释一下[1]:

S1 =>Standby,即指说系统处于低电源供应状态,在 windows or BIOS 中可设定屏幕信号输出关闭、 硬盘停止运转进入待命状态、电源灯号处于闪烁状态。此时动一动鼠标、按键盘任一键均可叫醒电脑。

S2 =>Power Standby,和 S1 几乎是一样。处理器关闭。总线时钟停止;一些总线可能会断电。电力消耗比状态 S1 少,比 S3 多

S3 =>Suspend to RAM,即是把 windows 现在存在内存中的所有数据保存不动,然后进入「假关机」。此时除了内存需要电源来保持数据以外,其它的设备、装置全部停止供电。电力消耗比S2状态少。也就是说,在S3状态下,理论上可以把 CPU, PCI,等组件拿拔掉并插回去,只要不动内存和电源,计算机也可能正常完成开机及运作。这时只剩下电源灯号一闪一闪的,其它和关机没什么两样。(电源供应器的风扇也停止运转)重新后,计算机将确认内存数据完整性后,会立刻恢复到进如S3前的画面。

S4 =>Suspend to Disk, 即是把 windows 内存中的数据完整的储存于硬盘中,使用这种模式的话,硬盘一定要腾出一个完整的连续空间。等开机时,就直接将数据加载到内存中,以恢复进入S4之前的状态。该模式是功耗最低的睡眠状态,具有最长的唤醒延迟。

S5 =>Shutdown,计算机完全关闭。

待机、休眠、睡眠的区别和优缺点[1]

睡眠(sleep),就是电源S3模式。将系统切换到该模式后,除了内存,电脑其他设备的供电都将中断,只有内存依靠电力维持着其中的数据(因为内存是易失性的,只要断电,数据就没有了)。这样当希望恢复的时候,就可以直接恢复到待机前状态。这种模式并非完全不耗电,因此如果在待机状态下供电发生异常(例如停电),那么下一次就只能重新开机,所以待机前未保存的数据都会丢失。但这种模式的恢复速度是最快的,一般五秒之内就可以恢复。

休眠(Hibernate),就是电源S4模式,将系统切换到该模式后,系统会自动将内存中的数据全部转存到硬盘上一个休眠文件中,然后切断对所有设备的供电。这样当恢复的时候,系统会从硬盘上将休眠文件的内容直接读入内存,并恢复到休眠之前的状态。这种模式完全不耗电,因此不怕休眠后供电异常,但代价是需要一块和物理内存一样大小的硬盘空间(好在现在的硬盘已经跨越TB级别了,大容量硬盘越来越便宜)。而这种模式的恢复速度较慢,取决于内存大小和硬盘速度,一般都要1分钟左右,甚至更久。

混合睡眠hiber-sleep),这种模式结合了待机和休眠的所有优点。将系统切换到睡眠状态后,系统会将内存中的数据全部转存到硬盘上的休眠文件中(这一点类似休眠),然后关闭除了内存外所有设备的供电,让内存中的数据依然维持着(这一点类似待机)。这样,当我们想要恢复的时候,如果在睡眠过程中供电没有发生过异常,就可以直接从内存中的数据恢复(类似待机),速度很快;但如果睡眠过程中供电异常,内存中的数据已经丢失了,还可以从硬盘上恢复(类似休眠),只是速度会慢一点。不过无论如何,这种模式都不会导致数据丢失。

Windows10 的现代睡眠(Modern Standby)

详情见:什么是Win10的“现代待机”?为什么它未来会越来越重要? - 知乎 (zhihu.com)

但是这个现代睡眠技术似乎并不是很完美,会导致一些问题,例如:

以下截取知乎用户评论:

  1. “2018年整条ThinkPad X1系列产品线都被s0ix这玩意害惨了。联想在预出厂BIOS中强行屏蔽s3睡眠模式只给s0ix,无论是原厂win10还是全新安装的win10,盒盖待机都发热严重,经过几小时电量就能给它榨得干干净净。这一现象引起了国内外用户群的强烈反响,一时间Lenovo Forum上多个千人盖楼怒斥联想联名要求联想回头是岸的帖子成为一道道美丽的风景线。后来联想迫于压力,放出了带有s3睡眠模式的BIOS。实际体验上,将睡眠模式调到s3后毫无发热,盒盖睡眠开盖秒开,睡眠一晚上消耗的电量1%都不到”

  2. “想法挺好,实际效果难用的要死,待机不到一天就没电了,有时候放包里拿出来时滚烫风扇狂转,或者开盖之后黑屏只能重启,估计是驱动的锅。有些厂商还屏蔽了传统的S3睡眠,然后我现在只能用休眠当睡眠用(xps15)”

如何查看自己的计算机属于何种模式的睡眠

在Windows下,打开命令行,执行powercfg -a命令[5],如下图:

powercfg -a

上图代表目前计算机的待机模式(睡眠模式)为S3。

ThinkPad X13 如何修改为睡眠为S3状态

因为Windows的现代睡眠(Modern Standby)可能会导致笔记本睡眠时滚烫,风扇狂转,或者开盖之后黑屏只能重启,所以需要修改睡眠模式为S3。

但是在Thinkpad X13 AMD GEN1的BIOS中,并没有直接设置S3的地方。只有一个选项与睡眠有关,见下图

BIOS

在Config选项中的pwoer子选项,有一个Sleep State的键值,该键值可以选择 Windows 和 Linux。经过我实际测试,Linux代表S3,Windows则代表现代睡眠。

我的BIOS是文字版的,目前新机器应该都是图形界面版的,操作可能略微不同,但是选项都是一样的。

参考资料

  1. https://blog.csdn.net/qq275650963/article/details/80702290
  2. 系统睡眠状态 - Windows drivers | Microsoft Docs
  3. Modern Standby states | Microsoft Docs ~ 现代待机状态 |微软文档
  4. Modern Standby | Microsoft Docs ~ 现代待机 |微软文档
  5. Windows——Modern Standby(现代待机) S0改Suspend to RAM(待机到内存)S3睡眠解决方案(以机械革命F1 i5-11300H为例)_Starzkg的博客-CSDN博客_s0待机
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值