== 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 电脑的四种运行状态工作状态 (Working), S0 睡眠状态 (Sleep), S1 或 S3 休眠状态 (Hibernate), S4 关机状态 (Shutdown), S5的更多相关文章

  1. windows线程池四种情形(win核心读书笔记)

    windows线程池四种情形(win核心读书笔记) Mircosoft从Windows2000引入线程池API,并在Vista后对线程池重新构架,引入新的线程池API.以下所有线程池函数均适用于Vis ...

  2. 把 Console 部署成 Windows 服务,四种方式总有一款适合你!

    一:背景 1. 讲故事 上周有一个项目交付,因为是医院级项目需要在客户的局域网独立部署. 程序: netcore 2.0,操作系统: windows server 2012,坑爹的事情就来了, net ...

  3. 输入/输出系统的四种不同工作方式对CPU利用率比较

    程序控制工作方式:输入/输出完全由CPU控制,整个I/O过程中CPU必须等待其完成,因此对CPU的能力限制很大,利用率较低 程序中断工作方式:CPU不再定期查询I/O系统状态,而是当需要I/O处理时再 ...

  4. 给电脑C盘系统盘瘦身的四种方法

    进入后XP时代,又有很多朋友选择了Win 7系统,很多朋友在使用时可能会发现一个问题.电脑刚被买回来时,我们往往都把C盘(系统盘)预留几十个G左右的空间,而且可能装的东西并不是太多,但是磁盘却显示,可 ...

  5. jvm锁的四种状态 无锁状态 偏向锁状态 轻量级锁状态 重量级锁状态

    一:java多线程互斥,和java多线程引入偏向锁和轻量级锁的原因? --->synchronized是在jvm层面实现同步的一种机制.  jvm规范中可以看到synchronized在jvm里 ...

  6. android 四种堆状态

    总结下: ====> 建议首先阅读下面两篇文章,这样才可以更好的理解Activity的加载模式: Android的进程,线程模型 http://www.cnblogs.com/ghj1976/a ...

  7. Java虚拟机15:再谈四种引用状态

    JVM的四种引用状态 在Java虚拟机5:Java垃圾回收(GC)机制详解一文中,有简单提到过JVM的四种引用状态,当时只是简单学习,知道有这么一个概念,对四种引用状态理解不深.这两天重看虚拟机这部分 ...

  8. C++线程同步的四种方式(Windows)

    为什么要进行线程同步? 在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作.更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理结果进行了解.正常情况下对这种处理结果的 ...

  9. Java虚拟机19:再谈四种引用状态

    JVM的四种引用状态 在Java虚拟机5:Java垃圾回收(GC)机制详解一文中,有简单提到过JVM的四种引用状态,当时只是简单学习,知道有这么一个概念,对四种引用状态理解不深.这两天重看虚拟机这部分 ...

随机推荐

  1. Java字节流和字符流,是时候总结一下IO流了

    目录 从接收输入值说起 字节流读取 字符流读取 Scanner 读取 什么是 IO 流 字节流和字符流 字节流 字节输入流 字节输出流 缓冲流的原理 字符流 字符输入流 字符输出流 为什么字符流需要 ...

  2. redis的线程模型

    一.单进程模型来处理客户端的请求 Redis 基于 Reactor 模式开发了自己的网络事件处理器: 这个处理器被称为文件事件处理器(file event handler): 文件事件处理器是单线程的 ...

  3. 史上最全jdk新特性总结,涵盖jdk8到jdk15!

    前言 在本文中,我将描述自第8版以来Java最重要且对开发人员友好的功能.为什么会有这样的主意?在Web上,您可以找到许多文章,其中包含每种Java版本的新功能列表.但是,由于缺少文章,因此无法简要概 ...

  4. 黑马 - poi Excel

    3.poi入门操作 3.1 搭建环境 1 <dependency> 2 <groupId>org.apache.poi</groupId> 3 <artifa ...

  5. DDD实践反思

    某大型互联网公司于2019年开始在XX中台财务域进行DDD实践.事后回顾,整体并没有达到预期的效果,个人也做了很多的反思和总结,形成此文. 1. 背景 为什么当时要实践DDD?其中的缘由比较复杂,可以 ...

  6. jquery 和 bootstrap 的使用

    jquery 和 bootstrap 的使用参考 bootstrap简介 jqury在线手册 jquery快速入门教程 jQuery 核心函数和方法 jQuery API jQuery CDN jQu ...

  7. Python 爬虫之urllib库的使用

    urllib库 urllib库是Python中一个最基本的网络请求库.可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据. urlopen函数: 在Python3的urlli ...

  8. 手动添加导入表修改EXE功能

    目标: 改动PE导入表,手工给HelloWorld增加一个功能,就是启动的时候写入一条开机启动项,C:\cmd0000000000000000000000000000.exe 实现方法: 直接在注册相 ...

  9. 记一次CTF的签到题

    开篇 打开题目网站 首先看到的是一个人博客,功能点非常少,功能较多的页面就是留言板了 一开始没啥思路,就想着抓包能不能找到SQL注入无果,在这个地方卡了很久 柳暗花明 在乱点的时候,无意中发现题目中的 ...

  10. Mac SSH工具-Termius

    全平台,功能强大 SSH连接.SFTP连接.端口转发.多设备同步 官方网站