s3睡眠模式代表着什么?( 二 )


D1-D2:这是D0、D3的中间状态 , 设备的部分功能正常 , 相对于D0而言 , 功耗更低 。不像D0和D3 , 设备的制造商可以不定义这两个状态 。
以低功耗蓝牙设备为例 , 不同电源状态下的功耗、恢复到正常状态的延迟和Sx状态类似 , 参考数据如下表所示:
【s3睡眠模式代表着什么?】s3睡眠模式代表着什么?
文章图片

文章图片

表注:数据来自微软文档和维基百科
设备的电源状态由对应的驱动程序控制 , 驱动程序可以相对独立地控制设备状态 。例如 , 我们在日常使用(S0)时 , 摄像头无需开启 , 那么此时的摄像头就会被调整为D3状态 。但是 , 当电源管理器决定要切换系统状态时 , 它们必须接受调度 , 系统电源状态和设备电源状态有预设的映射关系 , 我们可以在Windows设备管理器>设备>属性>详细信息>电源数据看到:
s3睡眠模式代表着什么?
文章图片

文章图片

如上图所示 , 我的显示器支持D0和D3两种状态 , 在系统为S0的情况下 , 最低可以达到D0状态 , 也就是说 , 可以处于D0-D3任意一种状态;而在系统为S3的情况下 , 则最低可以处于D3状态 , 也就是必须关闭 。硬件设备的制造商大多认为不需要在S3模式下保持功能正常 , 几乎所有设备被设定为S3对应D3 。
在Windows7及之前 , 以及目前的部分PC中 , 进入睡眠模式实质上就是系统电源状态由S0切换为S3 , 设备状态再根据映射关系 , 切换对应的Dx状态 , 这常常也被称为传统待机或是S3待机 。
以管理员权限打开终端 , 输入powercfg/a , 如果得到的结果中显示支持Standby(S3) , 则说明你的设备为传统待机:
s3睡眠模式代表着什么?
文章图片

文章图片

来源:forum.gigabyte.us
因此 , 在一台采用了传统待机模式的PC上 , 进入睡眠模式的步骤大致如下:
电源管理器决定切换系统状态为S3;
告知应用在规定时间内完成最后的操作 , 之后将它们挂起到内存;
通知硬件设备配合系统状态切换 , 设备悉数从D0切换到D3状态 。
至此 , 我们已经解决了S3睡眠模式是什么的问题 , 那么为什么微软抛弃它 , 选择所谓新型待机呢?
▍新需求与Sx状态的变体
虽然ACPI制定了电源管理的规范 , 但随着时间的推移 , 新的需求被发掘 , 人们开始在Sx状态的基础上做文章 。
例如 , Linux、Windows会支持一种叫做混合睡眠(hybirdsleep)的状态 。这种情况下 , 机器状态既会被保存到磁盘 , 也会被保存到RAM , 是S3和S4状态的混合;Mac也曾经宣传过这项特性 。ArchLinuxWiki解释了设置这种状态的目的:
如果电池没有耗尽 , 那么系统可以从RAM恢复 。如果电池耗尽 , 系统可以从磁盘恢复 , 这比从RAM恢复慢 , 但至少机器的状态没有丢失 。
在S3睡眠下 , 系统状态被保存到了RAM中 , 前面提到过RAM一旦断电 , 保存的内容就会消失;想要进入系统必须重新进行引导 , 而S4状态中用于保存系统状态的磁盘没有这种问题 。所以将两者结合的混合睡眠 , 既解决了数据安全问题 , 也可以在没耗尽电量之前尽可能缩短唤醒的时间 。
另外 , 比较知名的例子就是Windows中的「快速启动」功能 。很多人可能都不知道 , 在开启「快速启动」的这项功能以后 , Windows的关机功能不再是真的关机了 , 电脑在你点下关机按钮以后并不会进入S5状态 , 而是进入了S4休眠状态 。但休眠功能不是保存系统的全部状态吗?为什么Windows关机后还要输入密码 , 重新打开应用呢?