pycod
很多人在说我们讲故事吹NB 但是我们吹过的NB ,正在一一变为现实 !!!!!

== 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 台式机,进入睡眠时我们会发现它的硬盘仍在旋转(能听到旋转的嗡嗡声),而进入休眠时,硬盘肯定是不转的。
  • 休眠状态下能够主动唤醒主机的外设也更少。睡眠和休眠状态下具体哪些外设能够唤醒主机,跟当前系统的软硬件配置有很大关系。

 

posted on 2019-09-21 09:10  pycod  阅读(10547)  评论(0编辑  收藏  举报