关于电脑的待机、睡眠、休眠,这篇应该可以解答你所有的疑问

关于电脑的待机、睡眠、休眠,这篇应该可以解答你所有的疑问

本文提纲:

  • 前言,极简计算机模型
  • Windows 电脑的四种运行状态
  • 四种运行状态的总结表
  • Windows 电源状态的两种变体,混合睡眠和快速关机
  • 颠覆常识:关机再开机,不等于重新启动(Win8+)
  • iPhone/iPad 的电源管理是如何做的
  • 谈“待机”的含义

== 前言 ==

这年头智能电子产品已经无处不在,日常工作我们用电脑,Windows 或是 Mac ,出门在外带手机,苹果的或是安卓的,你在这些电子设备的屏幕上、或是使用手册上,是否留意到 待机、睡眠、休眠 这些提法呢?是否曾经困惑它们到底是什么意思、各自有什么区别呢?我以十五年软件工程师的经验向你解释这个问题,应该能够解开你的困惑。

了解这些有什么作用?我总结了三条:

  1. 满足好奇心。
  2. 更有效率地使用你的电子设备。
  3. 解决疑难问题——如果你刚好碰到的话。

最常碰到 待机、睡眠、休眠 这几个词汇的场合,应该是 Windows 电脑了,从 Windows 2000 起,这些概念就一直存在,直到 Windows 10,而且,微软还将它们变得越来越复杂,比如,Windows Vista/7 起出现了“混合睡眠”,Windows 8 起又引入了“快速关机/快速开机”,这些让人云里雾里的词汇,本文将一并帮你解释清楚。

由于 Windows 电脑几乎每个人都用过,而且也是出现最多名词的系统,我就从 Windows 系统入手来解释,当然,所得的结论最终也可以扩展到其他系统上,比如 Mac/iPhone/iPad ——因为它们的计算机体系结构是相同的,它们都是广义上的“计算机”。


【铺垫:极简计算机模型】

为了解释清楚本文主题,我不得不先花一点时间点拨一些必须的基础概念,因为下头的很多系统行为的描述需要依赖这些概念。

一套计算机硬件可以认为是 3+1 的结构。3 表示三种基础部件:CPU,内存,外围设备(简称外设),1 表示硬盘。

CPU: 相当于人的大脑中负责做决定的那个功能部件。计算机下一个时间点要做什么事(屏幕上显示一个图形,还是联网下载一首歌曲),其动作指令是由 CPU 发出的。

内存: 相当于人大脑中的记忆。全称叫 RAM, Random-Access Memory 的缩写。比如你用电脑在编辑一份文档,当文档还未存盘时,文档的内容是放在内存中的,Ctrl+S 存盘后才被写入硬盘。

对应到具体的硬件上,内存就是电脑商店里卖的“内存条”,Windows 和 Mac 电脑通常会配备 4, 8, 或 16GB 的 RAM。iPhone 6 只有 1GB RAM,到 iPhone 6S 时增大到 2GB。

外设:比如键盘、鼠标、网卡、摄像头、声卡、显示器、打印机等。CPU 执行的动作最终需要被人感知(比如播放一个影片让人看到),而人发出的指令也需要传达给 CPU (比如要求发送一段文字给 QQ 好友),各种各样的外设充当了人和 CPU 之间信息交换的接口。

最后说硬盘。

  • 硬盘其实也是一种外设,不过它在本文的讨论中地位特殊,我将其单独拎出。硬盘好比是人的藏书。我们的大脑无法记下所有的信息,我们可以将难记的信息先记到书里头,这样就不怕忘记了,待有需要的时候当场查书获知即可。
  • 现在到商店里买一台电脑,硬盘通常在 256GB 以上。而 iPhone/iPad 规格参数上说的 64/128/256 GB,实质是指它的“硬盘”容量。
  • 硬盘和内存都可以用来存放信息。它们有两个实质区别:
    • 如果系统突然掉电,内存中的信息将立即丢失,而硬盘中的信息则完好无损。
    • 内存中的信息可以被 CPU 直接处理(比如对内存中的两个数进行加法或乘法),处理速度很快,而硬盘中的信息无法被 CPU 直接处理,硬盘中的信息必须先经过一个慢速通道装载到内存后才能被 CPU 处理。这是过去几十年来人们的设计权衡:由于某一时刻一个具体的计算场景通常只需要相关的少量数据参与即可,因此,人们一方面用昂贵的成本制造低容量但高速的内存、另一方面用便宜的成本制造高容量但低速的硬盘,使得当前需要参与运算的数据在内存中能够装下就行,暂时用不到的数据,就让它们呆在硬盘上。


== Windows 电脑的四种运行状态 ==

这四种运行状态(或称电源状态)是:

  1. 工作状态 (Working), S0
  2. 睡眠状态 (Sleep), S1 或 S3
  3. 休眠状态 (Hibernate), S4
  4. 关机状态 (Shutdown), S5


请注意:以上四种状态中,并没有一种被我叫作“待机状态”,因为“待机”这个词是有歧义的,因此我避免使用它。

[一个提示] 在 Windows 2000 和 Windows XP 中,『开始』菜单→关机选项中确实有一项被叫作“待机(Standby)”,它的效果实际上等同于睡眠(Sleep)。微软后来应该是也觉得 Standby 这个提法有歧义,因此从 Vista 起就将其改名为“睡眠(Sleep)”。由于 Windows XP 的影响很深远,有些软硬件厂商一直用 Standby 来指代 Sleep ,直到今天。现在,请暂时忘掉“待机”这个提法,本文最后一部分回头再讨论这个词。

【工作状态】 工作状态就是一个系统的全功能状态,用户让它干什么它马上就干什么,只要是这个系统的软硬件能力范围之内。形象地说,用户敲一个按键或移动一下鼠标,屏幕上立即就有相应的反馈。

现在有一个问题,我不敲键盘也不按鼠标,电脑屏幕上一片寂静,那它还是处在工作状态吗?当然是,你应该将工作状态与否的实质理解为 CPU 有没有执行代码。虽然你觉得电脑是一片安静,但 CPU 可没闲着,因为系统中总是有一些后台程序在活动,比如,后台有个程序在帮你下载电影,操作系统自身的安全防护程序在扫描病毒。

没有人直接参与的这种工作状态,常常也被称作“空闲状态(Idle)”。空闲状态跟睡眠、休眠的区别在于,空闲状态下的系统仍旧是全功能运作的,有任何外部事件的发生,系统都会立即处理。比如:有个 QQ 好友突然发消息给你,你的 QQ 程序就会立即收到并弹出提示,即使你当时人不在电脑旁;反之,进入睡眠状态的 Windows 电脑是无法收到新的 QQ 消息的。

了解了工作状态的关键特征,现在可以说非工作状态了。拿 Windows 7 举例,开始菜单,关机选项能够呈现睡眠、休眠、关机这三种选择,全了。下面给出中英文界面对照图。

【睡眠状态】 睡眠状态的特征是: CPU 停止执行指令,内存中的东西原样留在内存中。


睡眠状态意味着:

  1. 你的未存盘文档没有丢失,它留在你的内存中。
  2. 后台的所有程序暂停执行,比如,后台的下载程序暂停下载动作,QQ 也不再能收到好友消息。
  3. 你可以敲一下键盘将系统唤醒。(点击或移动鼠标不一定能唤醒系统,看具体情况)
  4. 在系统被唤醒前,如果断电,内存中的信息将全部丢失,因为内存中的信息需要少量电力来维持。换言之,你的未存盘文档的未存盘部分将丢失。
  5. 系统唤醒后,所有的系统状态恢复成睡眠前的样子。你之前打开的所有应用程序窗口都留在原处,里头的内容也没变,你可以继续编辑未存盘的文档,就好像系统并未经历过睡眠那般。


【休眠状态】 休眠状态和睡眠状态的大部分特征是相同的,区别之处在于:原先睡眠状态下留在内存中的信息被原样写入硬盘,休眠完成后系统自身进入零耗电状态;唤醒系统时,硬盘中的内存镜像被原样装入内存,系统恢复运行。


这意味着:

  • 系统执行“进入休眠”这个操作,所花费的时间比“进入睡眠”要长很多,毕竟多了个“写硬盘”的动作。如果电脑上的硬盘是机械硬盘,写入速度算 100MB/s,内存大小是 4GB,那么,写硬盘时间可长达 40 秒。Windows 7 起有个改进,会将内存数据压缩后再写入硬盘,通常会节省一半的时间,即 20 秒,另外,当前没用到的内存块也不会被写入硬盘,又能再节省一些时间。
  • 休眠完成后,即使你拔掉电源线,未存盘的文档也不会丢失,因为数据已经存在硬盘上了。


一点点小结:由于睡眠和休眠并不丢失内存中的数据,因此 Windows 并不会提示你保存未存盘的文件。


【关机状态】 在 Windows 7 及之前版本的 Windows 上,开始菜单→关机,就是进入这种状态。关机将导致内存中的数据全部被清空,因此,应用程序会提示你保存未存盘的文档;如果你发现文档还需要修改修改才值得保存,你可以趁此机会取消刚才的关机请求。

这里提一下“重启(Restart/Reboot)”这个词,进入关机状态后再开机,被称为重启;如果是睡眠或休眠后再唤醒(Wakeup/Resume),则不叫重启。

【一个有趣的问题,既然休眠是零耗电,你愿不愿意用休眠来代替关机呢?】

就我个人而言,当我发现 Windows 2000 开始提供休眠功能时,我就爱上它了,我默认的关电脑方式就改为了休眠。我喜欢给电脑配大内存(总是将主板的内存槽都插满),同时打开多个程序,休眠带来的巨大好处是,从休眠中唤醒后,我昨天遗留的工作环境、软件状态就原原本本地在那里了,我的工作思路马上就能接上。


感谢 Windows NT 内核的高稳定性,一次 Windows 开机后一般能运行一两个月才需要重启。需要重启的场合有下面这么几种:

  • 升级了一个软件,升级过程被要求重启,不重启的话,有一些旧文件无法被删除。
  • 原因一般是系统组件或驱动程序出了问题,不重启无法解决故障。
  • Windows 自身有 bug,导致内存消耗太大的情况下无法进入休眠。微软陆续出过一些补丁来修正,但似乎一直没有彻底解决,该问题到 Windows 8.1 时还一直存在。

那休眠和唤醒的速度,比起关机再开机的速度,是否真的更快了呢?我的亲身体会是,如果内存没超过 8GB,休眠唤醒的速度体验确实比较快,而且,内存越小越快。想想看,Windows 一次开机过程,时间都消耗到哪里去了?如果是安装一份全新的 Windows ,不装任何第三方软件,它的开机速度是相当快的,大约 20 秒即可;随着你安装越来越多的第三方软件,开机速度将越来越慢,为什么呢?因为很多第三方软件会在系统中安插后台进程,那些后台进程是一开机就要执行的,是它们拖慢了开机速度。第三方软件的进程做完初始化动作后,如果你没有明确去使用它们,它们一般处于安静状态,只是消耗着少量的内存。现在你采用休眠策略,休眠和唤醒的过程,那些第三方程序是不需要重新初始化的,这部分时间就被活生生省下来了。

很可惜啊,休眠这么好的功能,很多人其实并不懂得使用,也许他们听说过这个功能,但是不敢使用。毕竟很多人对陌生的事物总是抱有一丝恐惧的。

~~~~


休眠是个好功能,但微软从 Vista 起的一个设计让我蛮痛恨的:休眠过程不再显示进度条了。


Windows XP 和 Windows 2000 的休眠过程会显示一个进度条,用于表示内存数据写入硬盘的进度。Windows XP 的显示如下:


刚才说过,这个操作通常需要几十秒时间,内存越大休眠越费时,因此有个进度条是很好的设计。然而,从 Vista 起,这个休眠进度条被微软砍掉了,那屏幕上显示什么呢?屏幕上什么都不显示,就是个黑屏。这就很让人讨厌了。想想以下两种场景。

  • 假设我用台式电脑,我希望休眠完毕后切断电源。我如何直观判断休眠是否完成了呢?
  • 我出差用笔记本电脑,我希望休眠完成后再将电脑塞到包里。需要判定的理由是,有某些情况休眠会失败,休眠失败意味着,虽然我向 Windows 下达了休眠请求,但 Windows 一直卡在工作状态,我的电脑还在大量地发热。冒然将还在工作状态的电脑憋在电脑包里,电脑有可能会因为过热而损坏。


没有了休眠进度条,休眠是否完成的判断方法还是有的,只不过比较费神,我得盯住电脑的电源指示灯,电源指示灯熄灭我才能确认休眠完成了。如果黑屏持续的时间比以往的经验要长很多,我只能判定休眠失败了,此时只好强制关机。


微软为什么要把这样有用的一个反馈界面给砍掉呢?我不相信这是技术难题,既然 Windows XP 都做到了,Vista 为什么做不到?两个字总结:犯懒。当然,微软会在其他方面找一些冠冕堂皇的理由来辩解,但根本站不住脚。下头讲“混合睡眠”时就会有这样一个理由。


【四种运行状态的总结表】

在 Sleep 状态下,除了键盘以外的哪些外设可以唤醒系统,不同软硬件的系统有不同的表现。比如,有些机器的 BIOS 设置中允许 USB 鼠标唤醒系统;使用 Intel 的网卡,通过网卡的驱动程序可以设置是否被特定的数据包唤醒。

下图是一个 Intel 网卡的驱动程序配置界面,可以配置 Windows 被什么样的网络数据包唤醒。图中所谓的“待命”,显然是沿用了 Windows XP 时代的 Standby 用语,其实它是 Sleep 的意思。

注:从概念上说,休眠是比睡眠更深度的节能状态,意思是,

  • 在休眠状态下,更多的外设会被系统置于“非活动”状态以节省电力消耗。举个例子,一台 2005 年左右的 PC 台式机,进入睡眠时我们会发现它的硬盘仍在旋转(能听到旋转的嗡嗡声),而进入休眠时,硬盘肯定是不转的。
  • 休眠状态下能够主动唤醒主机的外设也更少。睡眠和休眠状态下具体哪些外设能够唤醒主机,跟当前系统的软硬件配置有很大关系。


== Windows 电源状态的两种变体 ==


本节要解释的是 Windows 电源状态的两种变体。

  • Windows Vista 时引入的“混合睡眠”。
  • Windows 8 时引入的“快速关机”。


【 混合睡眠 (Hybrid Sleep) 】


拿 Windows 的截图说明,在高级电源设置中,有个“允许混合睡眠”选项。

“允许混合睡眠”打开,你将发现开始菜单→关机选项中故意不给你显示“休眠”了(当然,这不是本质问题,我们仍旧可以用 shutdown /h 命令来明确要求休眠)。


“允许混合睡眠”打开后,你在开始菜单中执行“睡眠”,其实际动作是执行混合睡眠(之前的那种睡眠,不妨起名叫“经典睡眠”)。混合睡眠的特征是:不但将原有内存数据留在内存中,同时也将内存数据写一份到硬盘中。


混合睡眠带来的好处是:

  • 如果睡眠后你的电脑供电一直没断,那么,唤醒的速度将很快,2~3 秒,因为所有的工作状态一直留在内存中。
  • 如果睡眠后你的电脑断电了,那么也不要紧,唤醒时将从硬盘中装入睡眠前的内存状态,你的工作数据也不会丢失,只不过唤醒时间较长罢了。此时的断电相当于是让系统自动进入了休眠状态。
  • 既然断电不要紧,我们就可以设一个 60 分钟的定时器(上一张图“在此时间后休眠”),让系统在进入混合睡眠 60 分钟后将自己断电,避免长时间无人使用电脑导致的电力消耗。想象一个有 100 台电脑的公司,每台 5~10W 的电力节省是很可观的。


嗯,混合睡眠是个相当聪明的设计,无需改变系统的基础架构,只是将 Sleep 和 Hibernate 的特征做一些组合就能带来崭新功能。


那混合睡眠是不是所有方面都比经典睡眠好呢?也不是,当我们只需要 Sleep 电脑一小会儿就唤醒它的情况下,进入混合睡眠的时间显然要长于经典睡眠。另外,对于安装了巨量内存(比如 32GB)的机器、且内存用得很满的情况下,往硬盘中写入和读取休眠文件的耗时相当之久,也许用户会更甘愿多消耗一些电力来换取每次“开机/关机”的迅捷。


对于大多数用户,混合睡眠总体是有利的,因此,在支持睡眠和休眠的电脑上,Windows 7 及其后续版本将混合睡眠功能默认打开了。


现在可以回头想一个问题,为什么从 Vista 起,Windows 执行休眠的过程不显示进度条了?

这个问题估计很难找到微软的官方回答。但如果有,他们的回答很可能是这样的:为了执行 Sleep, Hybrid Sleep, Hibernate 过程用户界面的一致性。

怎样做到一致性呢?就是统统让屏幕熄灭呗。唉,我只能叹口气了。

我期望的理想行为是,当写入休眠文件的动作正在执行时,屏幕上应该要出现进度条,同时,根据用户执行的是 Hybrid Sleep 还是 Hibernate ,旁边配上文字“正在进入睡眠” 或 ”正在进入休眠“,写硬盘完毕后,屏幕再显示一行”您现在可以安全地拔除电源了“, 停留两秒,将自己断电。

-


【 快速关机 (Fast Shutdown) 】


Fast Shutdown 的正式称呼是 Fast Startup (快速开机) 或 Fast Boot 。 我为什么喜欢叫它 Fast Shutdown 呢?因为它更体现本质,Fast Shutdown 是 Fast Startup 的前提。


Windows 8 刚出来的那阵子,你是否听到网上说 Windows 8 的开机/关机速度比 Windows 7 快了很多,你自己尝试了,也确实体会到了。那你知道快的原理在何处吗?


用 Windows 10 (1511) 为例(继承了 Fast Shutdown 功能),开启/关闭 Fast Shutdown 的选项如下图:


Fast Shutdown 开启的情况下,当你执行 开始菜单→关机时,Windows 干的其实是下面两件事:

  • 一,退出当前用户的会话,所谓的 Log off (Windows 10 起改名叫 Sign out,中文 Windows 翻译成”注销“)。注销的效果,简单说就是关闭所有前台程序,但内核和后台服务仍在运行。
  • 二,让 Windows 休眠。

对,就这么简单。


我前头说我爱上休眠功能时就分析了休眠唤醒为什么比关机开机要快,然而很多人因为对于新事物的恐惧而不愿意采用休眠代替关机,好了,现在微软替他们做决定了,在不违背大众通常使用习惯(关机+开机)的情况下,偷偷地用休眠/唤醒来提升他们关闭电脑/打开电脑的速度体验。


我们知道的,从 Windows XP → Windows 7 → Windows 8 → Windows 10 一路走来,Windows 自带的后台服务也是逐步增多,用休眠代替关机,对于提速的效果是相当明显的。


但请注意,你开启了 Fast Shutdown,并不意味着 Windows 总是忠实地执行 Fast Shutdown。在 Windows 觉得有必要时,它完全可以执行 clean shutdown,比如,在 Windows 安装了一些补丁包之后,有一些系统文件需要被替换,Fast Shutdown 是无法替换那些文件的,此时 Windows 就会转而执行 clean shutdown。


此处我不禁联想到一个问题,为什么在内存条如此便宜的今天,市面上 95% 的 Windows 笔记本电脑搭配的内存都没超过 8GB 呢? 我大胆的猜测是,大内存将显著降低 混合睡眠 和 快速关机 的执行速度,带给用户不好的体验。

要知道,在 Windows 在执行休眠操作(指内存数据写入硬盘休眠文件)时,你的电脑就是一块发热的砖头,你对它什么也做不了。你想立即唤醒它是做不到的,或说,休眠写硬盘动作一旦开始便无法中途取消,你非得等休眠动作完成后才能唤醒。内存越大,用户越容易撞到这个”唤不醒“的时间窗口,这并非好事。况且,你在休眠时屏幕并无显示,用户按电源键等待几秒后唤不醒,会倾向于认为电脑卡死了。


【快速关机带来的副作用】


这个副作用是:对 Windows 8+ 执行关机再开机,其效果不再等同于”重启“。


具体影响是:当 Windows 内核自身、驱动程序、或后台服务出现故障的情况下,Windows 8+ 执行关机再开机无法消除那些错误,因为休眠唤醒的过程中,Windows 内核、驱动程序、和后台服务并未重新初始化。

如何亲自验证“快速关机”的效果不同于重新启动?


现在我要举一个例子,该例子具有非常典型的意义,它向我们展示,Windows 自身某些组件的功能也被 Fast Shutdown 给绊倒。该例子呈现的问题,在 Windows 10.1709 上依旧没有被修复,而且也许微软永远不打算修复它了。

操作过程比较冗长,我专门开一个贴来记录:你可知道,从 Windows 8 起,关机再开机并不等同于重新启动


== 现在来谈谈移动设备 ==


想想 Windows 上那一大套的睡眠、休眠行话,而且还不时闹出一点让人困惑的问题,是否让你觉得这个世界太复杂了?技术自身很复杂无法避免,但对于我们普通的技术产品消费者则是认知负担。不是经常说科技以人为本吗?确实有公司替我们着想了,苹果公司的 iPhone/iPad 就是这样的例子,它让我们用户感受到的设备工作状态就两种,工作、或睡眠。


iPhone/iPad 的顶部或右侧有一个名叫 Sleep 的实体按钮(当然,你叫它 Wake 也可以),让我们明确地切换设备的工作与睡眠状态。工作状态时,按一下睡眠按钮,设备熄屏,暗示我们它进入睡眠状态了,再按一次,亮屏,设备唤醒回到工作状态。当然,你可以要求你的设备闲置一段时间(人不去操作它)自动进入睡眠。

iPhone/iPad 内部用的操作系统都是 iOS,机理完全相同,为简化文字,下面就只说 iPhone 。


在继续解释前,我不得不引入一个新词,熄屏状态。按下 iPhone 的睡眠按钮,你应该将其理解为让 iPhone 在熄屏状态和工作状态间切换。我故意避开“睡眠状态”这个用词,是因为该词在 Windows 系统和 iOS 系统中含义是不同的,避开它,能让我的表达更清晰。熄屏状态专门指按下 iPhone 按钮后 iPhone 熄灭屏幕显示的那种状态。


iPhone 为什么不需要 Windows 那般复杂的电源状态概念呢?为了理解这个问题,我们还得回到电源状态的本质。


回顾一下我前面提及的“极简计算机模型”,我们可以将计算机设备的电源状态抽象为考察两个关键因素?

  • 一,内存(RAM)的信息是否保留,保留在何处?
  • 二,CPU 是否在执行指令?


问题一好回答,由于 iPhone 的电池是内置的,无法拆卸,因此我们完全可以认为 iPhone 内存中的信息是永久保留的,而且就保存在内存中,也无需写入“硬盘”。


问题二,工作状态时,我们可以直观地认为 CPU 是在一直跑指令的,这样的简化理解是合适的。


复杂的地方在于熄屏状态。你觉得熄屏状态下 iPhone 的 CPU 停止跑指令了吗?显然不是,我们至少可以观察到如下现象:

  • 如果你正在播放音乐,进入熄屏后,音乐会继续播放,而且播完一首还会继续播下一首。这说明 CPU 在熄屏状态是有活动的。而 Windows 台式机在睡眠状态是绝对不可能给你播放音乐的。
  • 将 iPhone 连入 Wifi 网络,熄屏前先用另一台主机持续 ping 这只 iPhone 的 IP 地址。进入熄屏后,你会发现 ping 仍是通的,大约持续 10 秒后才变得不通。这说明进入熄屏后的十多秒内 CPU 肯定在活动。如果你愿意再观察久一些,你会发现大约 10 分钟左右 iPhone 又能被 ping 通 10 秒钟。
  • 在熄屏状态下,如果有一个 Facetime 呼叫请求进来,或是一条微信消息进来,你的设备会自动唤醒,进入工作状态。说明熄屏状态下 CPU 仍保持一定的活动性,这样才能响应各种各样的外界通知。


现在结论来了。在 iPhone 的熄屏状态,iOS 系统会精巧地控制 CPU 的活动状态,大多数时候让它处于停止状态,少数时候让它处于运行状态(执行指令)。此中显然有一些预设的判断原则:

  1. 如果一个程序要干的事是在屏幕上绘制图形,比如视频游戏,那系统将不给它分配 CPU 时间。因为此时是熄屏的,无需绘制。
  2. 如果一个程序的工作是播放音乐,则可以要求系统在熄屏状态消耗一些 CPU 时间让音乐继续播放。
  3. 如果一个程序希望能在熄屏状态弹出通知(微信消息之类),那么它可以要求系统中负责监视网络活动的代码保持警觉,当有网络通知到来时执行相应的动作。


通过停止执行不必要的任务,iPhone 就可以在熄屏状态下达到相比于亮屏状态下低得多的电力消耗,并且,整个系统看起来还是“活的”。也可以这么理解,iPhone 的熄屏状态是 Windows 工作状态和睡眠状态的混合体。

相比之下, Windows 的睡眠和休眠状态(S1, S3, S4) 就是“死的”,除了非常少的几个唤醒源(键盘、网卡)之外,睡眠中的整台机器就像一块砖头一样什么也做不了。


不过呢,随着移动时代的到来,微软肯定也意识到了这个问题。 从 Windows 8 开始,Windows 引入了一种新的电源状态,叫 S0 Standby,或 Modern Standby,原理和我上面分析的 iPhone 熄屏状态一模一样。该状态在一些 Windows 平板电脑上实现了,比如 Surface Pro 3, 小米平板二代。

用 powercfg -a 可查得当前系统是否支持 Modern Standby 。 Modern Standby 又分两种,一种是不带网络连接的,另一种是带网络连接的,后者在 进入熄屏状态时可以被特定的网络数据包唤醒(需要网卡硬件支持),后者也称 Connected Standby。小米平板二代支持后者。

对于一台 Windows 机器,我可以明确地要求它采取 S0 Standby 策略还是传统睡眠策略吗?答案是不行,目前看来,电脑的主板型号决定了它能支持哪一种睡眠策略;而且我还未发现某款机器能够同时支持两种策略的。


但目前不妙的是,Windows 平台上的移动 App 生态系统很薄弱,S0 Standby 的实用性跟苹果设备相比真是差太远了,大多数用户还是拿 Windows 来跑传统的“桌面程序” ,在这种情况下,系统是支持 S0 Standby 还是传统的睡眠几乎不成为我们选购 Windows 电脑的考虑因素。


== 重新谈谈“待机” ==


现在回头看看“待机”这个词。这个词发明得很妙,“待命中的机器”。待机,意味着我们当下并不急着使用该机器,而是让它处于待命状态,当我们稍后随时需要使用它时,我们可以立即使用。想想看什么场景可以称作待机。

  • 我们坐在开启的电脑屏幕前,什么都不做,电脑是否在在待机呢?当然,当我们想用它时,伸手敲敲键盘、动动鼠标,就可以开始用了,一秒钟都不用等待。
  • 我们让 Windows 电脑进入睡眠状态,它是不是在待机呢?当然也是,只不过我们需要 2~3 秒来唤醒它罢了,总比重新开机花上一分钟好得多。
  • iPhone/iPad 进入熄屏状态后,算是待机吗?更是了。我们可以随时唤醒它。


这么多场景都可以叫待机,难怪 Windows XP 之后微软就不再用待机这个含糊的提法了(除了 S0 Standby 这个给程序员的专用术语外),英文和中文通通改了。苹果的官方用语中也几乎不出现 Standby 这种提法。


按照我前头的分析,“待机”的核心意思在于,从人想要用一个设备,到这个设备真正可用所需的等待时长。如果时长足够短,我们就可以将先前那个状态称为待机。


随着电子产品的进步,待机这个词的表达力显然是不够的。我们还会关心另外两个维度的因素:

  1. 待机状态下的设备有多省电?
  2. 待机状态下的设备还保有多少的活动性?


在这两个维度下,苹果的 iOS 比微软的 Windows (包括已经没落的 Windows Mobile)领先了整整一个时代。这也多亏了苹果的软硬件一体策略,才能将整套系统的电源管理设计得那么漂亮。

END (初稿:2018.10.17)

编辑于 2018-10-17