Windows电脑的四种运⾏状态⼯作状态(Working),S0睡眠
态(Sleep),S。。。
== 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 的显⽰如下:
刚才说过,这个操作通常需要⼏⼗秒时间,内存越⼤休眠越费时,因此有个进度条是很好的设计。然⽽,windows错误恢复
从 Vista 起,这个休眠进度条被微软砍掉了,那屏幕上显⽰什么呢?屏幕上什么都不显⽰,就是个⿊屏。这就很让⼈讨厌了。想想以下两种场景。
假设我⽤台式电脑,我希望休眠完毕后切断电源。我如何直观判断休眠是否完成了呢?
我出差⽤笔记本电脑,我希望休眠完成后再将电脑塞到包⾥。需要判定的理由是,有某些情况休眠会失败,休眠失败意味着,虽然我向 Windows 下达了休眠请求,但 Windows ⼀直卡在⼯作状态,我的电脑还在⼤量地发热。冒然将还在⼯作状态的电脑憋在电脑包⾥,电脑有可能会因为过热⽽损坏。
没有了休眠进度条,休眠是否完成的判断⽅法还是有的,只不过⽐较费神,我得盯住电脑的电源指⽰灯,电源指⽰灯熄灭我才能确认休眠完成了。如果⿊屏持续的时间⽐以往的经验要长很多,我只能判定休眠失败了,此时只好强制关机。
微软为什么要把这样有⽤的⼀个反馈界⾯给砍掉呢?我不相信这是技术难题,既然 Windows XP 都做到了,Vista 为什么做不到?两个字总结:犯懒。当然,微软会在其他⽅⾯⼀些冠冕堂皇的理由来辩解,但根本站不住脚。下头讲“混合睡眠”时就会有这样⼀个理由。
【四种运⾏状态的总结表】
在 Sleep 状态下,除了键盘以外的哪些外设可以唤醒系统,不同软硬件的系统有不同的表现。⽐如,有
些机器的 BIOS 设置中允许 USB ⿏标唤醒系统;使⽤ Intel 的⽹卡,通过⽹卡的驱动程序可以设置是否被特定的数据包唤醒。
下图是⼀个 Intel ⽹卡的驱动程序配置界⾯,可以配置 Windows 被什么样的⽹络数据包唤醒。图中所谓的“待命”,显然是沿⽤了 Windows XP 时代的 Standby ⽤语,其实它是 Sleep 的意思。
注:从概念上说,休眠是⽐睡眠更深度的节能状态,意思是,
在休眠状态下,更多的外设会被系统置于“⾮活动”状态以节省电⼒消耗。举个例⼦,⼀台 2005 年左右的 PC 台式机,进⼊睡眠时我们会发现它的硬盘仍在旋转(能听到旋转的嗡嗡声),⽽进⼊休眠时,硬盘肯定是不转的。
休眠状态下能够主动唤醒主机的外设也更少。睡眠和休眠状态下具体哪些外设能够唤醒主机,跟当前系统的软硬件配置有很⼤关系。